[笔记6]JavaScript DOM编程艺术_最佳实践

本章内容

  • 平稳退化 确保网页在没有JS的情况下也能正常工作。
  • 分离JS 把网页的结构和内容与JS脚本的动作行为分开
  • 向后兼容性 确保老版本的浏览器不会因为你的JS脚本而死掉
  • 性能考虑 确定脚本执行的性能最优

平稳退化

如果正确地使用了JS脚本,就可以让访问者在他们的浏览器不支持JS的情况下仍能顺利地浏览你的网站,这就是平稳退化

JS使用window对象的open()方法来创建新的浏览器窗口。这个方法有三个参数:window.open(url,name,features)

  • url新窗口里打开的网页的URL地址
  • 新窗口的名字,可以在代码里通过这个名字与新窗口进行通信。
  • 以逗号分隔的字符串。其内容是新窗口的各种属性。
function popUp(winURL) {
    window.open(winURL,"popUp","width=320,height=480");
}

调用popUp函数的一个办法就是使用伪协议。
真协议用来在因特网上的计算机之间传递数据包,如http协议、ftp协议。伪协议是一种非标准化的协议。“javascript:”伪协议让我们通过一个链接来调用JS函数。

具体做法:

Example

这条语句在支持“javascript:”伪协议的浏览器中运行正常,较老的浏览器则会尝试打开链接失败,支持这种伪协议但禁用了JS功能的浏览器会什么也不做。

总之,在html文档里通过javascript:伪协议调用JavaScript代码的做法非常不好。

内嵌的事件处理函数

把onclick事件处理函数作为属性嵌入a标签,改处理函数将在onclick事件发生时调用图片切换函数。

Example

因为在上面这条HTML指令里使用了return false语句,这个链接不会被真的打开。“#”符号是一个仅供文档内部使用的链接符号。把href属性值设置为“#”只是为了创建一个空链接。实际工作全部由onclick属性负责完成。

但是上面的技巧都不能平稳的退化,如果用户已经禁用了浏览器的JS功能,这样的链接毫无用处。

具体到popUp()函数,为其中的JS代码预留出退路很简单。在链接里把href属性设置为真实存在的URL地址,让它成为一个有效的链接。

Example
//-------------用this简化一下-------------//
Example
//-------------更简单的方式-------------//
Example

在本书此前介绍的所有技巧当中,这个技巧最有用,但是它还有改进的余地。最明显的不足时:每当需要打开新窗口时,就不得不把一些JS代码嵌入标记文档中。如果能把事件处理函数在内的所有JS代码全都放在外部文件里,这个技巧将更加完善

向CSS学习

CSS是一项了不起的技术。CSS可以让人们对网站设计工作中的各个方面做出严格细致的控制。

标记良好的内容就是一切

PS:上面这句话深有感触。

分离JS

JS语言不要求事件必须在HTML文档里处理。我们可以在外部JS文件里吧一个事件添加到HTML文档中的某个元素上。element.event=action...
关键是怎样才能把应该获得这个事件的元素确定下来。这个问题可以利用class或者id来解决。

如果想把一个事件添加到某个带有特定id属性的元素上,用getElementById就可以解决问题:getElementById(id).event=action。如果事件涉及到多个元素,我们可以用getElmentsByTagName和getAttribute把事件添加到有着特定属性的一组元素上。

具体步骤:

  • 把文档里的所有链接全放入一个数组里。
  • 遍历数组。
  • 如果某个链接的class属性等于popup,就表示这个链接在被点击时应该调用popUp()函数。

于是,

  • 把这个链接的href属性值传递给popUp()函数;
  • 取消这个链接的默认行为,不让这个链接把访问者带离当前窗口。
var links=document.getElementByTagName("a");
for(var i=0;i

如果把上面这段代码存入外部JS文件中,它们将无法正常运行。因为代码的第一行是var links=document.getElementsByTagName("a");这句话将在JS文件被加载时立刻执行。如果JS文件是从HTML文档的< head>部分用

你可能感兴趣的:([笔记6]JavaScript DOM编程艺术_最佳实践)