平稳退化
1、何为平稳退化?
如果正确使用了JavaScript脚本,就能让访问者在其浏览器不支持JavaScript的情况下仍能顺利的浏览网站。这就是所谓的“平稳退化”,也就是说,虽然某项功能无法使用,但最基本的操作仍能顺利完成。
2、平稳退化的例子
“javascript:”伪协议
Eg:<a href="javascript:showPic(this);return false;"
>blackPic</a>
当浏览器不支持JavaScript的时候,不会顺利打开链接页面。
内嵌事件处理函数
Eg:<a href="#" onclick="showPic(this);return
false;">blackPic</a>
“#”符号是一个仅供文档内部使用的标记(但就这条指令而言,“#”是未指向任何目标的内部链接)
同样不能平稳退化。
可以平稳退化的
Eg:<a href="images/blackPic.jpg"
onclick="showPic(this);return false;" >blackPic</a>
即使不支持JavaScript,也会按照默认的href,打开链接,只是少了JavaScript的效果。
3 、为啥需要平稳退化?
搜索机器人是一种自动化程序,它们预览Web的目的是为了把各种网页添加到搜索引擎的数据库里。只有极少的搜索机器人能够理解JavaScript代码。所以,如果JavaScript网页不能平稳退化,其在搜索引擎上的排名就可能大受损害。
对象检测
所有的元素(包括方法)都可以作为对象,可以把不支持某个特定DOM方法的浏览器检测出来。即:
If(method){
statements;}
在使用对象检测时,一定要删除方法名后面的圆括号,如果不删掉,测试的将是方法的结果,无论方法是否存在。
比较好的方法是
if(!method){return false;},比较直观,操作也少。
如果需要测试多个属性或方法是否存在,可以用“逻辑或”操作符将其合并。
Eg:if(!method1 || !method2){ return false; }
键盘访问事件
专门用来处理键盘访问的事件是onkeypress,按下键盘上任何一个按键都会触发onkeypress事件。这会带来麻烦。
在几乎所有的浏览器里,用Tab键移动到某个链接然后按下回车键的动作也会触发onclick事件。所以,不用onkeypress事件,而用onclick代替,也是可以的。
DOM Core和HTML-DOM
DOM Core的方法适用于任何一种标记语言,是通用的。而HTML-DOM只能用来处理Web文档。所以,为了通用性,最好用DOM Core方法。
两者对比:
var source = myNode.getAttribute("href"); //DOM Core
var source = myNode.href; //HTML-DOM
myNode.setAttribute("src", source); //DOM Core
myNode.src = source; //HTML-DOM
其他性能考虑
避免重复搜索操作,尽量少访问DOM:
在多个函数都会取得一组类似元素的情况下,考虑重构代码,把搜索结果保留在一个全局变量里,或者把一组元素直接以参数的形式传递给函数。
减少文档中的标记数量
过多的不必要的元素只会增加DOM树的规模,进而增加遍历DOM树以查找特定元素的时间。
合并脚本
多个js脚本合并,减少加载页面时发送的请求数量。
放置脚本
如前所述,放在</body>之前。
分享到:
相关推荐
10. 游戏优化:代码使用了游戏优化技术,例如使用缓存和优化游戏循环,提高了游戏的性能和流畅度。 JavaScript 小游戏代码汇总展示了 JavaScript 语言在游戏开发中的应用,包括游戏逻辑、游戏对象、游戏事件和游戏...
初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识...
JavaScript Obfuscator是一种工具,主要用于保护JavaScript代码,通过将源代码转换为难以理解的形式,以防止未经授权的用户查看、修改或盗窃代码。在Web开发中,尤其对于那些包含商业逻辑或者敏感信息的JavaScript...
JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象...
HTML CSS and Javascript 基础学习代码 HTML CSS and Javascript 基础学习代码 HTML CSS and Javascript 基础学习代码 HTML CSS and Javascript 基础学习代码 HTML CSS and Javascript 基础学习代码 ...
html+css+JavaScript的学习代码html+css+JavaScript的学习代码 html+css+JavaScript的学习代码html+css+JavaScript的学习代码 html+css+JavaScript的学习代码html+css+JavaScript的学习代码 html+css+JavaScript的...
在哪里放置 JavaScript 代码? 通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代码放置在 HTML 文档的任何地方。但放置的地方,会对 JavaScript 代码的正常执行会有一定影响,具体如下所...
JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一。它诞生于1995年,由Netscape公司的Brendan Eich所创造,最初是为了增强网页的交互性。随着时间的推移,JavaScript已经发展成为一个功能...
"JavaScript实战 源代码"这个项目,很显然是一本关于JavaScript编程实践的书籍的配套源代码。源代码通常包含了书中所讲解的各种示例和练习,帮助读者更好地理解和应用所学知识。 在学习JavaScript时,实战经验和...
同时,理解AJAX(异步JavaScript和XML)可以实现页面的无刷新更新,提升网站的性能和用户体验。 在“JavaScript开发技术大全”中,你可能还会发现关于DOM遍历和操作、CSS操作、动画效果制作、表单验证、JSON处理、...
基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的...
这本书深入浅出地讲解了JavaScript编程中的许多关键概念和技术,旨在帮助开发者提升代码效率,优化应用程序性能。 首先,书中详细介绍了JavaScript的基础知识,包括变量、数据类型、作用域、函数、对象和原型等。...
JavaScript开发积分兑换小程序项目源代码JavaScript开发积分兑换小程序项目源代码JavaScript开发积分兑换小程序项目源代码JavaScript开发积分兑换小程序项目源代码JavaScript开发积分兑换小程序项目源代码。...
在标题"javascript 经典代码"中,我们可以推测这里涉及的是JavaScript语言中的关键代码示例,可能是解决常见问题的高效方案,或者是优化性能的技巧。这些经典代码可能是关于变量声明、函数定义、对象操作、数组处理...
不过需要注意,随着Nashorn的废弃,未来可能需要转向其他引擎,如GraalVM的JavaScript引擎,以保持兼容性和性能。在实际项目中,根据具体需求和Java版本选择合适的JavaScript引擎是非常重要的。
JavaScript代码压缩工具是一种优化网页性能的关键技术,尤其在当今互联网应用越来越复杂,JavaScript文件体积日益庞大的背景下,其重要性不言而喻。压缩JavaScript代码的主要目的是减少文件大小,提高网络传输效率,...
JavaScript,简称JS,是一种轻量级的解释型编程语言,广泛应用于网页和网络应用开发,是Web开发的核心技术之一。这个“javascript源代码集锦”很可能是为了帮助开发者学习和理解JavaScript的各种技巧和最佳实践,...
总而言之,《高性能JavaScript》是一本全面而深入的指南,它不仅教会你如何写出高效的JavaScript代码,还让你理解背后的原理,从而在实践中做出明智的选择。无论你是初级开发者还是经验丰富的专家,这本书都能为你的...
6. **JavaScript性能分析**:Zakas教授了如何使用开发者工具进行性能分析,识别性能瓶颈,并提供了改善代码性能的技巧,如避免阻塞渲染、减少HTTP请求等。 7. **JavaScript错误处理**:书中讨论了如何有效地捕获和...
《精通JavaScript(源代码)》是由jQuery之父John Resig撰写的高级JavaScript技术书籍,它不仅深入探讨了JavaScript的核心概念,而且重点解析了jQuery库的内部工作机制,为读者揭示了JavaScript编程的深层次奥秘。...