一、
<script type="text/javascript">
function GetUrlParms()
{
var args=new Object();
var query=location.search.substring(1);//获取查询串
var pairs=query.split("&");//在逗号处断开
for(var i=0;i<pairs.length;i++)
{
var pos=pairs[i].indexOf('=');//查找name=value
if(pos==-1) continue;//如果没有找到就跳过
var argname=pairs[i].substring(0,pos);//提取name
var value=pairs[i].substring(pos+1);//提取value
args[argname]=unescape(value);//存为属性
}
return args;
}
//使 ......
function Pause(obj, pSecond) {
/*利用window.eventList系统对象来传递Test这个弱对象,这是由于你的函数有可能是带参数的。
由面向对象的思想,传递参数尽量不要采用全局变量,因为你的对象有可能有1个也有可能有n个,而
有些时候所创建对象的个数并不是你事先可以知道的,那么要创建全局变量的个数自然很难判断了。
所以此处用一个中间载体来传递对象,而不是参数值!*/
if (window.eventList == null) window.eventList = new Array();
var ind = -1;
for (var i = 0; i < window.eventList.length; i++) {
if (window.eventList[i] == null) {
window.eventList[i] = obj;
ind = i;
break;
}
}
if (ind == -1) {
ind = window.eventList.length;
window.eventList[ind] = obj;
}
var sdf = pSecond * 1000;
setTimeout("GoOn(" + ind + ")", sdf);
}
function GoOn(ind) {
var obj = window.eventList[ind];
window.eventList[ind] = null;
if (obj.NextStep)
obj.NextStep();
else
obj();
} ......
function testExe(entityId, wfId) {
var id = crmForm.ObjectId;
var xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
GenerateAuthenticationHeader() +
" <soap:Body>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <Request xsi:type=\"ExecuteWorkflowRequest\">" +
" <EntityId>" + entityId + "</EntityId>" +
" <WorkflowId>" + wfId + "</WorkflowId>" +
" </Request>" +
" </Execute>" +
" </soap:Body>" +
"</soap:Envelope>" +
"";
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestH ......
原文链接:JavaScript: Its Not Just for Browsers Any More
Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。
也许你还不知道,JavaScript现在已经成了一门可编写出效率极高的、可用于开发产品级web服务器的出色语言。起初我也不相信,但2009 年启动的两个项目让这成为可能:CommonJS和Node。
尽管JavaScript已经出现很长一段时间了,运用也很广泛(可以说是这一星球上最常用的编程语言),但它一直只是局限在浏览器的范围内。与此 同时,一些框架试图将JavaScript引入到服务器端,这些框架有Aptana Jaxer,(采用了SpiderMonkey的 JavaScript解释器)和Helma(基于Rhino),但自身的不足又制约着它们的普及。
技术生态圈
当我们选择某种技术编写应用程序时,我们不只是选择编程语言,还同时选择了其相应的库文件。如果一种语言有一个活跃的社区以及大量可用的库,那么你 很容易用更短的时间编写出你的应用程序。
所有的现代编程语言都有一个标准库以及一个优秀的第三方代码库组成的技术生态圈(ecosystem)。Python是一种众所周知的以 batteries included"为特色的语言,而且有一个优秀的软件包生态圈形成的Python Package Index (P ......
1. 数据类型
javascript中包含6种数据类型:undefined、null、string、number、boolean和object。其中,前5
种是原始数据类型,object是对象类型。
object类型中包括Object、Function、String、Number、Boolean、Array、Regexp、Date、
Globel、Math、Error,以及宿主环境提供的object类型。
2. 类型判断
通常在javascript中进行类型判断主要通过3种方式:typeof、instanceof、constructor。
2.1 typeof
typeof操作可能返回的类型为undefined、object、number、string、function、boolean。但是会有一
些情况并不能完全判断准确。比如typeof new String('')的值为object。
2.2 constructor
有时候我们可能会很偷懒的使用a.constructor ==
String进行类型判断,但是constructor其实是不靠谱的东西。因为当我们调用a.constructor的时候,内部操作其实是
ToObject(a).prototype.constructor(ToObject是什么,看下文分解)。
看下面一段代码就能明白:
String
.
prototype
.
constructor
=
Number
;
alert
(
'test'
.
constructor
==
String
);
//Result:false
或者
function
MyClass
()
{
}
MyClass
.
protot ......
解决思路
这个效果并不算常见,通常用于游戏或个人站点中。因为拖曳是靠鼠标来操作的,所以对鼠标的位置的捕获是问题的重点,然后才是根据鼠标的位置设置层的位置。
具体步骤:
1.在对象(层)上按下鼠标时,先捕获到需要拖曳的对象,然后获取或设置该对象的相关属性。
obj=event.srcElement
obj.setCapture()
z=obj.style.zIndex
obj.style.zIndex=100
x=event.offsetX
y=event.offsetY
down=true
2.开始拖曳时,捕获鼠标当前位置,并根据该数值设置被拖曳对象的位置。
obj.style.posLeft=document.body.scrollLeft+event.x-x
obj.style.posTop=document.body.scrollTop+event.y-y
3.拖曳完松开鼠标后,重设标志 down ,还原对象的 z-index并释放对它的鼠标捕捉。
down=false
obj.style.zIndex=z
obj.releaseCapture()
4.完整代码。
<mce:script type="text/javascript"><!--
var x,y,z,down=false,obj
function init(){
obj=event.srcElement //事件触发对象
obj.setCapture() //设置属于当前对象的鼠标捕捉
z=obj.style.zIndex ......