1.Dom-文档对象模型利用Dom可以给文档增加交互能力,Javascript是可以使网页具备交互能力的设计语言。
2.一份文档就是一棵节点树;节点分为不同的类型:元素节点、属性节点和文本节点等;getElementById将返回一个对象,该对象对应着文档里的一个特定的元素节点;getElementByTagName和getElementByClassName将返回一个对象数组,它们分别对应着文档里一组特定的元素节点;每个节点都是一个对象。
3.DOM是一种适用于多种环境和多种程序设计语言的通用型API。
4.如果想让函数在网页加载完毕之后立刻执行,网页加载完毕时会触发一个onload事件,这个事件与window对象相关联,可以把想要执行的函数绑定到这个事件上:window.onload = function();但是如果有两个或多个函数需要在网页加载完毕时执行,如果把它们逐一绑定到onload事件上,它们当中只有最后那个才会被实际执行。
每个事件处理函数只能绑定一条指令,有一个办法可以解决这种情况:可以先创建一个匿名函数来容纳这两个函数,然后把那个匿名函数绑定到onload事件上:
window.onload = function(){
firstFunction();
secondFunction();
}
在需要绑定的函数不是很多的场合,这应该是最简单的解决方案了。
这里还有一个弹性最佳的解决方案,不管在页面加载完毕时需要执行多少个函数。这个函数的名字是addLoadEvent,它只有一个参数:打算在页面加载完毕时执行的函数的名字。下面是addLoadEvent函数将要完成的操作。
①把现有的window.onload事件处理函数的值存入变量oldonload。
②如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它。
③如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾。
function addLoadEvent(func){
var oldonload = window.onload;
if (typeof window.onload != 'function'){
window.onload = func;
}else{
window.onload = function(){
oldonload();
func();
}
}
}
这将把那些在页面加载完毕时执行的函数创建为一个队列。把刚才那两个函数添加到这个队列中去:
addLoadEvent(firstFunction);
addLoadEvent(secondFunction);
5.Ajax的主要优势就是对页面的请求以异步方式发送到服务器。而服务器不会用整个页面来相应请求,它会在后台处理请求,与此同时用户还能继续浏览页面并与页面交互。你的脚本则可以按需加载和创建页面内容,而不会打断用户的浏览体验。
Ajax技术的核心就是XMLHttpRequest对象。这个对象充当着浏览器中的脚本(客户端)与服务器之间的中间人的角色。以往的请求都由浏览器发出,而JavaScript通过这个对象可以自己发送请求,同时也自己处理响应。
6.在使用Ajax时,千万要注意同源策略。使用XMLHttpRequest对象发送的请求只能访问与其所在的HTML处于同一域中的数据,不能向其他域发送请求。此外,有些浏览器还会限制Ajax请求使用的协议。比如在Chrome中,如果你使用file://协议从自己的硬盘里加载example.txt文件,就会看到“Cross orign requests are only supported for HTTP”(跨域请求只支持HTTP协议)的错误消息。
7.如果你觉察到自己正在使用DOM技术把一些重要的内容添加到网页上,则应该立刻停下来去检讨你的计划和思路。你很可能会发现自己正在滥用DOM!下面这两项原则要牢记在心。
一、渐进增强(progressive enhancement)。渐进增强原则基于这样一种思想:你应该总是从最核心的部分,也就是从内容开始。应该根据内容使用标记实现良好的结构;然后再逐步加强这些内容。这些增强工作既可以是通过CSS改进呈现效果,也可以是通过DOM添加各种行为。如果你正在使用DOM添加核心内容,那么你添加的时机未免太迟了,内容应该在刚开始编写文档时就成为文档的组成部分。
二、平稳退化。渐进增强的实现必然支持平稳退化。如果你按照渐进增强的原则去充实内容,你为内容添加的样式和行为就自然支持平稳退化,那些缺乏必要的CSS和DOM支持的访问者仍可以访问到你的核心内容。如果你用JavaScript去添加这些重要内容,它就没法支持平稳退化,不支持JavaScript,就看不到内容。这好像是一种限制,其实不是,利用DOM去生成内容有着广泛的用途。
网友评论