《JSDOM编程艺术》笔记
持续更新,gitHub地址 :
https://github.com/ghCarol/demo/tree/master/Notes
目录
- 目录
- 正文
- 《JS&DOM编程艺术》
- 第四章——“JS图片库”
- 1. 取消链接跳转
- 2. getElementsByName()和getElementsByTagName()
- 3. window.onload = functionName;
- 4. 得到’p’元素包含的文本值
- 5. firstChild , lastChild属性。
- 6. ‘script’引入文件标签为什么失效
- 第五章——“最佳实践”
- 1. window.open(url,name,features);函数
- 2. javascript伪协议,不利于平稳退化
- 3. href=”#” 的平稳退化替代方案
- 4. JS平稳退化可从CSS得到借鉴,结构和样式分离
- 5. 渐进增强
- 6. 分离JavaScript举例
- 7. 向后兼容
- 8. 性能优化:尽量少访问DOM次数和尽量减少标记
- 9. 性能优化:合并和放置JS脚本
- 10. 性能优化:压缩脚本
- 第四章——“JS图片库”
- 《JS&DOM编程艺术》
正文
《JS&DOM编程艺术》
第四章——“JS图片库”
1. 取消链接跳转
取消链接的跳转onclick="return false;"
<a href="images/1.png" onclick="showPic(this); return false;"/>
2. getElementsByName()和getElementsByTagName()
getElementsByName();
返回带有指定名称的对象的集合,查询元素的 name 属性。getElementsByTagName();
返回带有指定标签名的对象的集合,比如document.getElementsByTagName("input");
3. window.onload = functionName;
window.onload = countBodyChildren;
而不是 window.onload(count...);
PS: countBodyChildren()是一个function
4. 得到’p’元素包含的文本值
<p>
元素本身的nodeValue属性是空值,想要得到<p>
元素所包含的文本值应这样写:
alert(description.childNodes[0].nodeValue); //var description = document.getElementById("description");
5. firstChild , lastChild属性。
6. ‘script’引入文件标签为什么失效
<script type="text/javascript" src="scripts/showPic.js"> </script>
==千万不能写成== <script type="text/javascript" src="scripts/showPic.js"/>
,后者没用,因为script标签不能直接闭合,必须要有成对的结尾</script>标签。
第五章——“最佳实践”
1. window.open(url,name,features);函数
window.open(url,name,features);
方法创建新的浏览器窗口
第二个参数name
是新窗口的名字,可以在代码里通过这个名字与新窗口进行通信。
举例应用:window.open("https://www.baidu.com","popup","width=320,height=480");
2. javascript伪协议,不利于平稳退化
- 真协议,如HTTP协议(http://)、FTP协议(ftp://),用来在因特网上的计算机之间传输数据包
- 伪协议,是一种非标准化的协议。”javascript:”伪协议让我们通过一个链接来调用JavaScript函数:
<a href="javascript:popUp('http://www.baidu.com')">Example</a>
在HTTP文档里==通过”javascript:”伪协议调用JavaScript代码的做法非常不好==
3. href=”#” 的平稳退化替代方案
<a href="#" onclick="popUp('http://www.baidu.com');return false;">Example</a>
“#”只是为了创建一个空链接,实际工作全由onclick属性负责完成。
这个技巧与用”javascript:”伪协议调用JavaScript代码的做法==同样糟糕,因为他们都不能平稳退化==,如果用户禁止浏览器的JavaScript功能,这样的代码毫无用处。
<a href="http://www.baidu.com" onclick="popUp(this.href); return false;">Example</a>
4. JS平稳退化可从CSS得到借鉴,结构和样式分离
5. 渐进增强
原则:不将CSS代码混在HTML文档里(避免使用内嵌产生式css),将表示层(CSS)和行为层(JavaScript)与结构分开。
按照渐进增强原则创建出来的网页几乎都符合平稳退化原则。
6. 分离JavaScript举例
在JS中利用element.event = action …
window.onload = prepareLinks; //这句话保证了脚本在HTML文档加载完整(DOM完整)后执行function prepareLinks() {var links = document.getElementsByTagName("a"); //这条语句在JS文件被加载时立即执行for (var i = 0; i < links.length; i++) {if (links[i].getAttribute("class") == "popup") {links[i].onclick = function() {popUp(this.getAttribute("href"));return false;}}}
}
Q:必须让代码在HTML文档全部加载到浏览器后马上开始执行,但是
- 如果JS文件是从<head>部分<script>标签调用的,它将在HTML文档之前加载到浏览器里。
- 如果<script>标签位于</body>之前,就不能保证哪个文件最先结束加载(浏览器可能一次加载多个)。
A:HTML文档全部加载完毕时将触发一个事件,这个事件有他自己的事件处理函数。文档将被加载到一个浏览器窗口里,document对象又是window对象的一个属性。当window对象触发onload事件时,document对象已经存在。
7. 向后兼容
有些浏览器只支持部分javascript功能,但不支持DOM。因此给网页添加行为时遵循“渐进增强”原则,可以使这些行为都能够平稳退化。举例:
if(document.getElementById){statements using getElementById //不足:如果需要检测多个DOM方法或属性是否存在,
} //这个函数最重要的语句会被层层花括号包裹,使代码难以阅读和理解。//Better: 测试条件改为:如果你不理解这个方法,请离开。
if(!document.getElementsByTagName || !getElementById) return false;
8. 性能优化:尽量少访问DOM次数和尽量减少标记
减少DOM访问次数:使用变量预存DOM查询的值,之后操作该变量即可
9. 性能优化:合并和放置JS脚本
合并JS脚本为一个外部文件,将其放置在</body>前。
10. 性能优化:压缩脚本
多数情况下,应该存两个代码版本:
- 工作副本:可以修改代码并添加注释
- 精简副本:用于放在站点上,为了区分,最好在精简副本的文件名中加上min字样,如scriptName.min.js
推荐压缩工具:
Douglas Crockford的JSMin
雅虎的YUI Compressor
谷歌的Closure Compiler
《JSDOM编程艺术》笔记相关推荐
- 《信贷的逻辑与常识》笔记
序 银行信贷风险管理的反思 现状与趋势 银行贷款的质量变化与经济周期.宏观调控政策等存在很高的相关性 现在银行不良贷款的增加主要是前几年经济快速增长时企业过度投资.银行过度放贷所带来的结果. 从历史情 ...
- AI公开课:19.02.27周逵(投资人)《AI时代的投资逻辑》课堂笔记以及个人感悟
AI公开课:19.02.27周逵(投资人)<AI时代的投资逻辑>课堂笔记以及个人感悟 目录 课堂PPT图片 精彩语录 个人感悟 课堂PPT图片 精彩语录 更新中-- 文件图片已经丢失-- ...
- 人工智能入门算法逻辑回归学习笔记
逻辑回归是一个非常经典的算法,其中也包含了非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了. 秉持着精益求精的工匠精神不断对笔记进行 ...
- 【逻辑回归学习笔记】
算法描述 1.逻辑回归要做的事就是寻找分界面实现二分类. 2.问题假设:对一堆三角形和正方形分类. 3.数据输入:已知正方形和三角形的坐标和标签. 4.算法过程: 知识储备 1.分类和回归 ①分类的目 ...
- 逻辑回归函数学习笔记
继续逻辑回归学习,今日笔记记录. 1.逻辑回归和线性回归的关系:对逻辑回归的概率比取自然对数,则得到的是一个线性函数,推导过程如下. 首先,看逻辑回归的定义 其次,计算两个极端y/(1-y),其值为( ...
- 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授
逻辑回归 上一节我们知道,使用线性回归来处理 0/1 分类问题总是困难重重的,因此,人们定义了逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1) 和 非(0). Sigmoid预测函数 在逻辑 ...
- LVM逻辑卷分区笔记
磁盘的静态分区有其缺点:分区大小难评估,估计不准确,当分区空间不够用的时候,系统管理员可能需要先备份整个系统,清除磁盘空间,然后重新对磁盘进行分区,然后恢复磁盘数据到新分区,且需要停机一段时间进行恢复 ...
- 适合理工直男的钟平老师逻辑英语学习笔记
一切的一切都只是套路! --鲁迅 核心公式: En: (状语1) 主(定语1) 谓(状语2) (宾)(定语2) (状语1) Ch: (状语1) (定语1)主 (状语2)谓 (定 ...
- 【数字逻辑】学习笔记 第四章 Part2 常用组合逻辑电路与竞争、险象
文章目录 一.常用组合逻辑电路 1. 译码器 (1) 二进制译码器 74LS138(3/8译码器) a. 一般符号和图形符号 b. 74LS138功能表 c. 两片 `74LS138` 构成 `4-1 ...
- 线性回归、逻辑回归学习笔记
学习源代码 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 这是我们设定的真实函数,即ground trut ...
最新文章
- 我已经喜欢上了Python
- 全国计算机建模三等奖,2009年全国数学建模真题(论文获国家 三等奖).doc
- 【杂谈】GitHub上有哪些好用的爬虫(从Google百度,腾讯视频抖音,豆瓣知乎到不可描述)
- onsrcoll和scrollTop兼容与实现
- 【OS学习笔记】十四 保护模式二:段描述符
- LoadRunner中Action的迭代次数的设置和运行场景中设置
- pip install scikit-image on windows 失败 解决方案
- lisp 图元 天正 自定义_C# 自定义autolisp 函数 研究
- HBase 中文文档0.97
- ios transporter 缓存_鸿蒙和安卓都是开源,为什么iOS系统却可以获得出色的口碑?...
- 用c#中的WebBrowser抢小米F码,抢小米手机以及自动测试实现原理
- mysql jdbc 5.6_mysql5.6 jdbc驱动官网下载|
- 预测房价实验-房价数据集
- 产业分析:工业机器人市场研究
- python人工智能方向怎么学_如何学习人工智能
- 李沐老师 d2l库画图在 pycharm 动态显示问题(已解决)
- ARP病毒的分析与防治
- 内存输出流ByteArrayOutputStream
- mysql存储过程_mysql存储过程的写法
- 关于直播,所有的技术细节