第五章
质疑一切的精神
无论想通过那种javascript改变哪个网页的行为,都必须三思而后行;首先应该确认为网页添加额外的行为是否确有必要?比如利用脚本让浏览器窗口在屏幕上四处移动或产生振动以及弹出的广告窗口。
不仅仅是javascript编程,生活中也是如此。
平稳退化
平稳退化:让访问者在其浏览器不支持javascript的情况下仍能顺利的浏览网站。虽然某些功能无法使用,但基本的操作仍能顺利完成。
注意 + 可访问性
应该只在绝对必要的情况下使用弹出窗口,因为这牵涉到网页的可访问性问题,有的用户的屏幕读取软件可能无法向用户说明弹出了窗口。(如果某个网页链接将弹出新窗口,最好在这个链接本身的文字中予以说明)
创建新的浏览器窗口(属于BOM)
window.open(url,name,features)
Url:在新窗口里打开的网页的url地址;省略将弹出空白窗口。
Name:新窗口的名字;
Features:以逗号分隔的字符串,其内容是新窗口的各种属性。包括尺寸(高宽);及各种浏览功能(工具条,菜单条,初始显示位置等等);原则是少而精。
典型应用:
function popUp(winURL){
window.open(winURL,"popup","width=320px,height=480px");
}
虽然伪协议和内嵌的事件处理函数都可以调用上面的应用函数;但它们都不能实现平稳退化;而不能平稳退化对搜索引擎排名有很大影响。
渐进增强
Css最大的优点是能够实现内容结构与样式分离;从而确保了网页能够平稳退化。
对于网页设计而言,标记良好的内容就是一切;而所谓渐进增强就是用一些额外的信息层去包裹原始数据(反映了结构,样式,行为三者分离的思想)。能渐进增强就能平稳退化。
向后兼容问题
兼容问题由对javascript(特别是DOM)支持不同引发;要解决向后兼容问题,也就是老浏览器兼容问题;最简单就是检测浏览器对javascript的支持程度。
将某个方法打包在一个if语句里,根据求值结果(true or false)来决定应该采用怎样的行动的检测称为对象检测。使用对象检测时一定要删除掉method后面的圆括号,否则测试的将是方法的结果;而无论方法是否存在。
if(method){
statements;
}
性能考虑
- 尽量少访问DOM和尽量减少标记
- 合并和放置脚本。(外部文件能实现分离重用;合并可减少加载页面时发送的请求量,有利于性能优化;而脚本放置位置对页面加载也有影响。)(根据HTTP规范,浏览器每次只能从同一个域名中最多同时下载两个文件,而下载脚本期间,浏览器不会下载其他任何文件。)
- 压缩脚本文件也可以加快加载速度。(它会删除如空格等不必要字节,压缩文件大小以利于下载。)