重重的壳裹着轻轻的仰望

I smile when I'm angry. I cheat and I lie. I do what I have to do ··· To get by.

导航

随着javascript和用户对体验的要求,web浏览器得到了长足的发展,这一章讨论浏览器中的javascript。

1.各种语言中的<script>标签

(1).作为最早的支持javascript的语言,HTML中的<script>标签是这样定义的:

引入外部文件:
<script language="JavaScript" src="../test.js"></script>

内嵌:
<script language="JavaScript">
var i=0;
</script>

早先,对于一些老的不支持js的浏览器,开发者们创造了如下方法屏蔽javascript代码:
<script language="JavaScript"><!--hidden from older browsers
 function test(){
  alert("test");
 }
 //-->
</script>

此法巧用了html的注释和javascript的注释,使得不支持js的浏览器忽略js代码,而支持js的浏览器则执行代码。
你现在能从很多web站点看到这些特征的代码。今天它已经不是必需的了,因为基本没有不支持js的浏览器了,即使
某个浏览器不支持,他也会忽略js代码

(2).后来出现的XHTML(可扩展的html),<script>标签进化成这样了:

引入外部文件:
<script type="text/javascript" src="../test.js"></script>

内嵌:
<script language="JavaScript">
var i=0;
</script>

大多数开发者如今都使用type这一方法声明javascript,从而更好地支持XHTML。而省略language则不会带来任何问题。

(3).SVG中的javascript:

引入外部文件:
<script type="text/javascript" xlink:href="../test.js"></script>

内嵌:
<script type="text/javascript"><![CDATA[
var i=0;
]]></script>

注意:type特性是必需的,language特性是不合法的,使用xlink:href代替src特性。内嵌的代码段必须使用CDATA段。


2.windows对象

(笔者按:由于定位的是“高级程序设计”,top,parent,self等等这些众所周知的都不在赘述。这里只记录一些高级的或者容易遗忘的知识点。后面章节同。)

窗口操作:
moveBy(dx,dy),movtTo(x,y),resizeBy(dw,dh),resizeTo(w,h);
IE提供了window.screenLeft、window.screenTop、document.body.offsetWidth、document.body.offsetHeight来判断窗口位置和视口的大小(没有判断窗口大小的方法)
Mozilla,Opera,Safari则提供了window.screenX、window.screeenY、window.innerWidth、window.innerHeight、window.outerWidth、window.outerHeight来判断窗口位置,视口大小和窗口大小

confirm()和prompt()的区别:
prompt除了ok,cancel按钮,还有文本框来获取用户输入的某些数据。

var iTimeOutId = setTimeOut(method,millisecond);//自触发时起,等待多少毫秒执行method方法
clearTimeOut(iTimeOutId);

var iIntervalId = setInterval(method,millisecond);//自触发时起,循环间隔多少毫秒执行method方法,循环
clearInterval(iIntervalId);

3.document对象

document对象中的alinkColor,bgColor,fgColor,linkColor,vlinkColor等属性引用了旧的HTML特性,建议以后不要使用,而使用样式表脚本来代替他们。

document.write(string)和doucument.writeln(string)的唯一区别就是后者会在字符串末尾加上换行符(\n).

记住:要插入页面内容属性,必须在完全载入页面前调用write(string)或writeln(string)方法。否则,它们将抹去页面的内容,只显示你写入的内容string

document.write可以用来动态引入javascript,但是要注意:
<script type="text/javascript">
 document.write("<script type=\"text/javascript\" src =\"test.js\">"
 + "</scr" +"ipt>");
</script>

第三行,写入串后面的"</script>"必须被分开写,这是必要的。因为浏览器会自动闭合<script>标签,这样会使页面标签混乱并报错。

4.location对象

有hash,host,hostname,href,pathname,port,protocal,search等众多属性

location.href="http://punkchen.cnblogs.com" 和 location.assign("http://punkchen.cnblogs.com")效果相同
location.replace("http://punkchen.cnblogs.com")与它们的不同之处在于。replace方法删除了浏览器历史中你定位到新页面的原始页面,使你不能通过浏览器上
的“前进”“后退”按钮访问它
location.reload()方法,重新加载页面,reload(true)表示从服务器端重新加载页面;reload()和reload(false)表示从缓存里重新加载页面

由于浏览器的提示(是否重新加载页面?),开发者经常用到的页面刷新方法是:
location.href = location.href;

5.navigator对象

用于提供浏览器信息。但是标准的缺失阻碍了navigator对象的发展。不同浏览器对其支持相差很大。(标准化是多么重要啊!)
有弊必有利,你可以利用navigator这个特性,判断当前页面是用哪个浏览器浏览的。网上很多方法,一找一大堆。