Web浏览器中的JavaScript(二)
<script>和</script>标记之间的JavaScript语句随着HTML语句按照在HTML文档中出现的顺序执行。这同样适用于src性质从分离的文件中添加的脚本。根据这一特性,我们在编写JavaScript语句时要警惕,在HTML文档中前面的JavaScript语句,不应包含它后面,还未被创建的JavaScript对象。比如:我们出现在<head>部门的脚本,该文档的<body>部分显然还没有被定义,这时就要避免在这段脚本中访问HTML文档主体内容的JavaScript对象(如Form和Link),因为此时它们还没有被创建。
不过,我们可以通过定义函数来解决这个问题。我们只要保证在调用这个函数的时候,函数中不访问还未创建的对象既可。
HTML解析器在JavaScript解释器运行脚本时会停止解析文档。HTML文档只有在它包含的所有脚本运行结束后才会完整地显示出来,所以我们要尽量避免在JavaScript中直接执行大量计算,以免让用户等待太长时间。如果需要JavaScript执行大量计算,我们应定义一个执行函数,在用户需要时才调用。
onload()和onunload()事件处理程序:
这两个事件处理程序都是在HTML文件的标记<body>或<frameset>中定义的。onload()是文档或框架被完全装载时调用的,这表明包括图像、子框架、所以Java小程序和插件等都被装载并显示出来了。onunload()是在刚要卸载页面之前执行的,这发生子浏览器要显示新的页面时。我们可以用它来取消处理onload处理程序或网页中其他脚本的效果。
javascript:URL通常用于代替事件处理程序,所以和事件处理程序类是,这种URL中的代码可以在一个文档被完全装载前执行。
Window对象和变量的生存期:
一个新文档被装载到窗口或框架中时,那个窗口或框架的Window对象会被恢复为它的默认状态,即由前一个文档中的脚本定义的所有属性和函数都将被删除。
对于多窗口或多框架,除了考虑Window对象中定义的变量和函数的持续性外,还需要考虑Window对象自身的持续性。只要浏览器的顶级窗口存在,那代表它的Window对象会一直存在,对它的Window对象的引用都有效。
这意味着,Window对象的生存期可能比它包含和显示的网页长,也可能比它显示的网页所包含的脚本长。