方法一:

可以很好的捕获异常,故推荐

[CODE=javascript]
function XHR(){ //创建XMLHttpRequest对象
var xhr;
try{
xhr=new XMLHttpRequest();
}catch(e){
var a=[‘MSXML2.XMLHTTP.5.0′,’MSXML2.XMLHTTP.4.0′,’MSXML2.XMLHTTP.3.0′,’MSXML2.XMLHTTP’,’MICROSOFT.XMLHTTP.1.0′,’MICROSOFT.XMLHTTP.1′,’MICROSOFT.XMLHTTP’];
for (var i=0;i try{
xhr = new ActiveXObject(a[i]);
break;
}catch(e){}
}
}
if (!xhr) alert(“Error creating the XMLHttpRequest object.”);
else return xhr;
}
[/CODE]

方法二:

简单,一句话搞定

[CODE=javascript]
var xml = window.ActiveXObject ? new ActiveXObject(“Microsoft.XMLHTTP”) : new XMLHttpRequest();
[/CODE]

以下是记录来访次数的代码:

[CODE=javascript]

[/CODE]

主要通过几个实例来学习JavaScript的with、this和自定义构造函数

1、with

with 语句 为一个或一组语句指定默认对象。

用法:with (<对象>) <语句>;

with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用:

x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10);
y = Math.tan(14 * Math.E);

当使用 with 语句时,代码变得更短且更易读:

with (Math) {
  x = cos(3 * PI) + sin(LN10);
  y = tan(14 * E);
}

2、this对象

返回“当前”对象。在不同的地方,this 代表不同的对象。如果在 JavaScript 的“主程序”中(不在任何 function 中,不在任何事件处理程序中)使用 this,它就代表 window 对象;如果在 with 语句块中使用 this,它就代表 with 所指定的对象;如果在事件处理程序中使用 this,它就代表发生事件的对象。

一个常用的 this 用法:

<script>

function check(formObj) {
  …
}

</script>

<body …>

<form …>

<input type="text" … onchange="check(this.form)">

</form>

</body>

这个用法常用于立刻检测表单输入的有效性。

3、自定义构造函数

下面是一个搜集浏览器详细资料的自定义构造函数的例子:

function Is() {
  var agent = navigator.userAgent.toLowerCase();
  this.major = parseInt(navigator.appVersion);  //主版本号
  this.minor = parseFloat(navigator.appVersion);//全版本号
  this.ns = ((agent.indexOf(‘mozilla’)!=-1) &&
             ((agent.indexOf(‘spoofer’)==-1) && //是否 Netscape
              (agent.indexOf(‘compatible’) == -1)));
  this.ns2 = (this.ns && (this.major == 3));    //是否 Netscape 2
  this.ns3 = (this.ns && (this.major == 3));    //是否 Netscape 3
  this.ns4b = (this.ns && (this.minor < 4.04)); //是否 Netscape 4 低版本
  this.ns4 = (this.ns && (this.major >= 4));    //是否 Netscape 4 高版本
  this.ie = (agent.indexOf("msie") != -1);      //是否 IE
  this.ie3 = (this.ie && (this.major == 2));    //是否 IE 3
  this.ie4 = (this.ie && (this.major >= 4));    //是否 IE 4
  this.op3 = (agent.indexOf("opera") != -1);    //是否 Opera 3
  this.win = (agent.indexOf("win")!=-1);        //是否 Windows 版本
  this.mac = (agent.indexOf("mac")!=-1);        //是否 Macintosh 版本
  this.unix = (agent.indexOf("x11")!=-1);       //是否 Unix 版本
}

定义:var is = new Is();

之后我们就可以用is.ns或者is.unix判断浏览器的版本了。

 

通过 arguments 属性,函数可以处理可变数量的参数。 arguments 对象的 length 属性包含了传递给函数的参数的数目。对于arguments 对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。

例如下面一个函数:

<script type="text/javascript" language="javascript">
function add(){
var sum=0;
for(var i=0;i<arguments.length;i++)
{
    sum+=arguments[i];
    }
    return sum;
    }
    document.write("arguments应用:"+add(3,4,5,6,7,8)+"<br />");

</script>

这是显示的结果:

全局对象:
eval() 把括号内的字符串当作标准语句或表达式来运行。
isFinite() 如果括号内的数字是“有限”的(介于 Number.MIN_VALUE 和 Number.MAX_VALUE 之间)就返回 true;否则返回 false。
isNaN() 如果括号内的值是“NaN”则返回 true 否则返回 false。
parseInt() 返回把括号内的内容转换成整数之后的值。如果括号内是字符串,则字符串开头的数字部分被转换成整数,如果以字母开头,则返回“NaN”。
parseFloat() 返回把括号内的字符串转换成浮点数之后的值,字符串开头的数字部分被转换成浮点数,如果以字母开头,则返回“NaN”。
toString() 用法:<对象>.toString();把对象转换成字符串。如果在括号中指定一个数值,则转换过程中所有数值转换成特定进制。
escape() 返回括号中的字符串经过编码后的新字符串。该编码应用于 URL,也就是把空格写成“%20”这种格式。“+”不被编码,如果要“+”也被编码,请用:escape(‘…’, 1)。
unescape() 是 escape() 的反过程。解编括号中字符串成为一般字符串。

下面是Math,Date对象的一些应用:

<script type="text/javascript" language="javascript">document.write("返回常数 e (2.718281828...):"+Math.E+"<br />");document.write("LN2 返回 2 的自然对数 (ln 2):"+Math.LN2+"<br />");document.write("LN10 返回 10 的自然对数 (ln 10):"+Math.LN10+"<br />");document.write("LOG2E 返回以 2 为底的 e 的对数 (log2e):"+Math.LOG2E+"<br />");document.write("LOG10E 返回以 10 为低的 e 的对数 (log10e):"+Math.LOG10E+"<br />");document.write("返回π(3.1415926535...):"+Math.PI+"<br />");document.write("返回 1/2 的平方根:"+Math.SQRT1_2+"<br />");document.write("返回 2 的平方根:"+Math.SQRT2+"<br />");var x=3,y=4;document.write("abs(x) 返回 x 的绝对值:"+Math.abs(x)+"<br />");document.write("acos(x)返回 x 的反余弦值(余弦值等于 x 的角度),用弧度表示:"+Math.acos(x)+"<br />");document.write("asin(x)返回 x 的反正弦值:"+Math.asin(x)+"<br />");document.write("atan(x) 返回 x 的反正切值:"+Math.atan(x)+"<br />");document.write("atan2(x, y) 返回复平面内点(x, y)对应的复数的幅角,用弧度表示,其值在 -π 到 π 之间:"+Math.atan2(x,y)+"<br />");document.write("ceil(x) 返回大于等于 x 的最小整数:"+Math.ceil(x)+"<br />");document.write("cos(x) 返回 x 的余弦:"+Math.cos(x)+"<br />");document.write("exp(x) 返回 e 的 x 次幂 (ex):"+Math.exp(x)+"<br />");document.write("floor(x) 返回小于等于 x 的最大整数:"+Math.floor(x)+"<br />");document.write("log(x) 返回 x 的自然对数 (ln x):"+Math.log(x)+"<br />");document.write("max(a, b) 返回 a, b 中较大的数:"+Math.max(x,y)+"<br />");document.write("min(a, b) 返回 a, b 中较小的数:"+Math.min(x,y)+"<br />");document.write("pow(n, m) 返回 n 的 m 次幂 (nm):"+Math.pow(x,y)+"<br />");document.write("random() 返回大于 0 小于 1 的一个随机数:"+Math.random()+"<br />");document.write("round(x) 返回 x 四舍五入后的值:"+Math.round(x)+"<br />");document.write("sin(x) 返回 x 的正弦:"+Math.sin(x)+"<br />");document.write("sqrt(x) 返回 x 的平方根:"+Math.sqrt(x)+"<br />");document.write("tan(x) 返回 x 的正切:"+Math.tan(x)+"<br />");var d = new Date('Oct 1, 1999');document.write("返回一个字符串,描述日期对象所指的日期:"+d.toString()+"<br />");document.write("返回一个字符串,描述日期对象所指的日期,用本地时间表示格式:"+d.toLocaleString()+"<br />");document.write("返回一个字符串,描述日期对象所指的日期:"+d.toUTCString()+"<br />");document.write("返回该日期对象的内部表达方式:"+Date.parse()+"<br />");document.write("eval() 把括号内的字符串当作标准语句或表达式来运行:"+eval("3+4")+"<br />");document.write("如果括号内的数字介于 Number.MIN_VALUE 和 Number.MAX_VALUE 之间返回 true;否则返回 false:"+isFinite(34453453452342)+"<br />");document.write("escape() 返回括号中的字符串经过编码后的新字符串:"+escape("1 在2") +"<br />");document.write("unescape() 是 escape() 的反过程:"+unescape(escape("1 在2")) +"<br />");</script>

运行结果如下:

先看下面关于Number,String,Array基本属性和方法应用的执行效果:

这里是源代码:

[CODE=html]


基本对象(Number,String,Array)–JavaScript学习笔记(3)

[/CODE]

<html>
<head>
<title>文件对象和浏览器信息–JavaScript学习笔记(2)</title>
</head>
<body>
<script language="javascript" >
<!–
 document.write("文件标题:");
 document.write(document.title);
 document.write("<br />网页最后修改日期(chrome不支持):");
 document.write(document.lastModified);
 document.write("<br />网页背景颜色:");
 document.write(document.bgColor);
 document.write("<br />网页文字颜色:");
 document.write(document.fgColor);
 document.write("<br />浏览器名称:");
 document.write(navigator.appName);
 document.write("<br />浏览器原始程序名:");
 document.write(navigator.appCodeName);
 document.write("<br />电脑平台的格式:");
 document.write(navigator.platform);
 document.write("<br />访问者所用的语言:");
 document.write(navigator.userLanguage);
 document.write("<br />操作系统的语言(netspace不支持):");
 document.write(navigator.systemLanguage);
 document.write("<br />浏览器版本:");
 document.write(navigator.appVersion);
 document.write("<br />浏览器使用者代理的标题:");
 document.write(navigator.userAgent);
 document.write("<br />");
 //–>
</script>
</body>
</html>

运行效果:

最近开始写JavaScript了,为了熟练一下所学的知识,开了个JavaScript学习专题。

JavaScript的语法我就不介绍了,各种语言差不多是一眼的,大家找本书看一下或者看看别人的JavaScript脚本就行了。

但还是先说一个常用的操作:

字符和数值变量转换:var a="123",a=a-0,就可以吧a转化为数值,同理 var b=123,b=b+"",可以把b转为"123"。

下面介绍alert()、confirm()、prompt()

<html>
<head>
<title>JavaScript对话视框–JavaScript学习笔记(1)</title>
</head>
<body>
<script language="javascript" >
<!–

 mes=new Array(2);
 mes[0]="hello";
 mes[1]="good";
 document.write(mes[0]);
 document.write("<br />");
 document.write(mes[1]);
 document.write("<br />");
 var aa=confirm("hello");   //confirm()弹出带确定和取消的对话框,返回值分别为true和false
 if(aa==true) document.write("you choose right!");
 else document.write("you choose wrong!");
 document.write("<br />");
 aa=prompt("请输入您的称呼!");  //prompt()带输入框的对话框,aa存储输入的值
 if(aa) alert(aa);          //alert()带确定的对话框

//–>

</script>
</body>
</html>