《JavaScript Dom 编程艺术》读书笔记-第5章
上一篇随笔中记录了用JavaScript建一个基础图片库,但实际上还有很多地方可以改进。第五章将逐步进行改进,这一章里需要明白的道理是达到目标的过程和达到目标同样重要~
第五章:最佳实践
5.1 过去的错误
如果要使用JavaScript,就要确认,这么做对于用户的浏览体验产生怎样的影响,如果用户的浏览器不支持JavaScript怎么办?
5.2 平稳退化
平稳退化:如果正确使用JavaScript脚本,就可以让访问者在他们的浏览器不支持JavaScript的情况下仍能顺利访问你的网站。即,虽然某些功能无法使用,但最基本的操作仍然能顺利完成。
例子:在新窗口里打开一个链接。(点击某个链接时弹出一个新窗口)
ps:应该旨在绝对必要的情况下才使用弹出窗口,因为这将牵涉到网页的可访问性问题。
window.open(URL,name,features);
//三个参数都是可选
//第一个参数代表想在新窗口中打开的URL地址,如果省略,将打开空白的窗口。
//第二个参数是新窗口的名字。可以通过这个名字与新窗口通信。
//第三个参数是以逗号分隔的字符串,其内容是新窗口的各种属性。原则:新窗口的浏览功能要少而精。
一个典型应用:
function popUp(winURL){//将打开一个320像素宽,480像素高的新窗口“popup”
window.open(winURL,"popup","width=320,height=480");
}
1. 在 HTML中调用此函数的一个方法就是使用“javascript: ”伪协议,让我们通过一个链接来调用JavaScript函数。
<a href="javascript:popUp('https://www.baidu.com')">example</a>
在较老的浏览器中尝试打开链接但失败,支持这种伪协议但禁用JavaScript的浏览器会什么也不做。总之这种方式不好。
2. 用onclick事件处理函数来调用popUp函数。
<a href="#" onclick="popUp('https://www.baidu.com');return false;">example</a>
也不能平稳退化。
3. 第2种的改进,满足平稳退化
<a href="https://www.baidu.com" onclick="popUp(this.getAttribute("href"));return false;" >example</a>
5.3 向CSS学习
CSS 层叠样式表,能够帮助你将web文档的内容结构(标记)和版面设计(样式)分离开来,这样能保证页面的平稳退化。
渐进增强:用一些额外的信息层去包裹原始数据。按“渐进增强”原则创建出来的页面几乎都符合平稳退化。
“标记良好的内容就是一切”,即使去掉CSS,文档的内容也可以访问。
5.4 分离JavaScript
之前的JavaScript已经和HTML分开了,问题出在内嵌的事件处理函数中。
<a href="https://www.baidu.com" class="popup">example</a>
window.onload=function(){ //在HTML加载完毕后会触发onload事件
var links=document.getAttributeByTagName("a");//将文档里的所有连接发至到一个数组里。
for (var i=0;i<links.length ;i++ )//遍历数组
{
//如果某个classs属性等于popup,就在这个链接被点击时调用popUp函数。
if (links[i].getAttribute("class")=="popup")
{
links[i].onclick=function(){
popUp(this.getAttribute("href"));
return false;
}
}
}
}
5.5 向后兼容
对象检测:检测浏览器对于JavaScript的支持程度。
window.onload=function(){
if (!document.getAttributeByTagName)//检测 浏览器是否支持getAttributeByTagName这个方法
{
return false;
}
var links=document.getAttributeByTagName("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.6 性能考虑
尽量减访问DOM,尽量减少标记。
合并和放置脚本。
压缩脚本。
5.7 小结
平稳退化。
分离JavaScript。
向后兼容。
性能考虑。
《JavaScript Dom 编程艺术》读书笔记-第5章的更多相关文章
- JavaScript DOM编程艺术读书笔记(三)
第七章 动态创建标记 在web浏览器中往文档添加标记,先回顾下过去使用的技术: <body> <script type="text/javascript"> ...
- JavaScript DOM编程艺术读书笔记(二)
第五章 最佳实践 平稳退化(graceful degradation):如果正确使用了JavaScript脚本,可以让访问者在他们的浏览器不支持JavaScript的情况下仍能顺利地浏览你网站.虽然某 ...
- JavaScript DOM编程艺术读书笔记(一)
第一章,第二章 DOM:是一套对文档的内容进行抽象和概念化的方法. W3C中的定义:一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态的访问和修改文档的内容,结构和样式. DHTML( ...
- JavaScript DOM编程艺术 - 读书笔记1-3章
1.JavaScript语法 准备工作 一个普通的文本编辑器,一个Web浏览器. JavaScript代码必须通过Html文档才能执行,第一种方式是将JavaScript代码放到文档<head& ...
- JavaScript DOM编程艺术 读书笔记
2. JavaScript语法 2.1 注释 HTML允许使用"<!--"注释跨越多个行,但JavaScript要求这种注释的每行都必须在开头加上"< ...
- JavaScript DOM编程艺术读书笔记(四)
第十章 实现动画效果 var repeat = "moveElement('"+elementID+"',"+final_x+","+fin ...
- JavaScript DOM编程艺术-学习笔记(第二章)
1.好习惯从末尾加分号:开始 2.js区分大小写 3.程序界万能的命名法则:①不以,数字开头的数字.字母.下划线.美元符号 ②提倡以下划线命名法来命名变量,以驼峰命名法来命名函数.但是到了公司往往会身 ...
- 《javascript dom编程艺术》笔记(一)——优雅降级、向后兼容、多个函数绑定onload函数
刚刚开始自学前端,如果不对请指正:欢迎各位技术大牛指点. 开始学习<javascript dom编程艺术>,整理一下学习到的知识.今天刚刚看到第六章,记下get到的几个知识点. 优雅降级 ...
- JavaScript DOM编程艺术学习笔记(一)
嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...
- JavaScript DOM编程艺术-学习笔记
发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...
随机推荐
- 玩转spring boot——war部署
前言 之前部署spring boot应用是通过直接输入命令“java -jar”来实现的.而有些情况,由于部署环境的制约,只能把项目从jar转换成war才能部署,如新浪云sae的java环境容器.那怎 ...
- [openjudge-搜索]单词接龙
题目描述 描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙&q ...
- go get Unknown SSL protocol error in connection to gopkg.in
OSX go get报错 go get Unknown SSL protocol error in connection to gopkg.in https://github.com/niemeyer ...
- C# 生成 COM控件
C#编写COM组件 软件:Microsoft VisualStudio 2010 1.新建一个类库项目 2.将Class1.cs改为我们想要的名字(例如:MyClass.cs) 问是否同时给类改名,确 ...
- Redis 分布式缓存 Java 框架
为什么要在 Java 分布式应用程序中使用缓存? 在提高应用程序速度和性能上,每一毫秒都很重要.根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开. 缓存 ...
- UI自动化(六)js
HTML中的三把利器的JS 又称为JavaScript,看着好像和Java有点联系,实际上他和java半毛钱关系都没有,JavaScript和我们学习的Python.Go.Java.C++等,都是一种 ...
- opencv学习之路(23)、轮廓查找与绘制(二)——访问轮廓每个点
一.简介 二.画出每个轮廓的每个点 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat src= ...
- Python3 tkinter基础 OptionMenu 将list导入下拉列表中
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- GEC6818交叉开发环境搭建拟稿
为manjaro linux配置交叉工具链 为gec6818开发版下载一个arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 ...
- Windows Server 2008 R2 下载地址
以下资源均来自微软 MSDN,是原汁原味的原版系统资源,值得系统爱好者收藏.以下多数链接是 ed2k 链接,推荐使用国外开源的 eMule 下载,亦可使用迅雷,但使用 eMule 更有利于共享资源. ...