4_最佳实践(DOM编程艺术)

5. 最佳实践

5.1 过去的错误

5.2 平稳退化

讨论在用户点击某个链接时弹出一个新窗口

(注意:应该只在绝对必要的情况下才使用弹出窗口,因为这牵涉到网页的可访问性问题)

JavaScript使用window对象的open()方法来创建新的浏览器窗口,该方法有三个参数

window.open(url,name,features)

这三个参数都是可选的

  • 第一个参数是网页的URL地址,忽略后屏幕上将弹出一个空白的浏览器窗口
  • 第二个参数是新窗口的名字
  • 第三个参数是一个以逗号分割的字符串,其内容是新窗口的各种属性(少而精)

该方法是使用BOM的一个好案例,对文档的内容没有任何影响,只和浏览环境有关

下面这个函数是window.open()方法的一种典型应用:

function popUp(winURL){
	window.open(winURL,"popup","width=320,height=480");
}

会影响到网页的只是:我将如何使用这个函数

调用popUp函数的一个办法就是使用伪协议

5.2.1 "javascript:"伪协议

"javascript:"伪协议让我们通过一个连接来调用JavaScript函数

具体做法:

<a href="javascript:popUp('http://www.example.com/')">Example</a>

5.2.2 内嵌的事件处理函数

5.3 向CSS学习

5.3.1 结构与样式的分离

5.3.2 渐进增强

5.4 分离JavaScript

//把调用popUp()函数的onclick事件添加到有关的链接
//var links = document.getElementsByTagName("a"); 在JavaScript文件被加载时立刻执行
//必须让这些代码在文档全部加载后马上开始执行
window.onload = prepareLinks;
function prepareLinks(){
    var links = document.getElementsByTagName("a");
    for(var i=0; i<links.length; i++){
		if(links[i].getAttribute("class")=="popup"){
        	links[i].οnclick=function(){
            	popUp(this.getAttribute("href"));
            	return false;
        	}
   	     }
	}
}
function popUp(winURL){
	window.open(winURL,"popup","width=320,height=480");
}

5.5 向后兼容

5.5.1 对象检测

if(!method){
	return false;
}

插入一条if语句去检查浏览器是否理解所调用的方法

window.onload = function(){
    if(!document.getElementsByTagName return false;
    var links = document.getElementsByTagName("a");
    for(var i=0; i<links.length; i++){
		if(links[i].getAttribute("class")=="popup"){
        	links[i].onclick=function(){
            	popUp(this.getAttribute("href"));
            	return false;
        	}
   	     }
	}
}

5.5.3 浏览器嗅探技术

5.6 性能考虑

5.6.1 尽量少访问DOM和尽量减少标记

不管什么时候,只要是查询DOM中的某些元素,浏览器都会搜索整个DOM树,从中查找可能匹配的元素

尽量减少文档中的标记数量,过多不必要的元素只会增加DOM树的规模,进而增加遍历DOM树以查找特定元素的时间

5.6.2 合并和放置脚本

包含脚本的最佳方式就是使用外部文件,因为外部文件与标记能清晰地分离开,而且浏览器也能对站点中的多个页面重用缓存过的相同脚本

把所有script标签都放到文档的末尾,body标记之前,就可以让页面变得更快。

即使这样,在加载脚本时,window对象的load事件依然可以执行对文档进行的各种操作

5.6.3 压缩文本

即把脚本文件中不必要的字节,如空格和注释,统统删除

有很多程序可以做这件事

5.7 小结

本章介绍了一些与DOM脚本编程工作有关的概念和实践

  • 平稳退化
  • 分离JavaScript
  • 向后兼容
  • 性能考虑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值