A-A+

《javascript DOM 编程艺术》读书笔记·第五、六章

2015年12月06日 JavaScript 暂无评论

平稳退化 graceful degradation   浏览器不支持javascript也可浏览。

window.open(url,name,features)三个参数均可选。

伪协议pseudo-protoco;伪协议是一种非标准化的协议,

this可以用来代表任何一种当前元素。

if(!getElementById) return false;

浏览器嗅探browser sniffung

尽量减少文档中的标记数量。

浏览器每次从同一个域名中最多只能同时下载两个文件,且在下载脚本前几件,浏览器不会下载其他任何文件,即使是来自不同域名的文件也不会下载,所有其他资源都要等脚本加载完毕后才能下载。

两个版本,一个是工作副本,可以修改代码并添加注释。另外为精简副本,用于放在站点,最好在文件名中加上min字样。

if (!getElementById) return false;

尽量少访问DOM和尽量减少标记

如果想用javascript给某个网页添加一些行为,就不要让javascript代码对这个网页的结构有任何依赖。

structed programming 结构化程序设计中的一条原则:函数应该只有一个入口和一个出口。(不必过分拘泥)。作者个人意见:如果一个函数有多个出口,只要这些出口集中出现在函数的开头部分就是可以接受的。

循环中常用的for语句中i是英语单词increment,递增。

addLoadEvent 只有一个参数:打算在页面加载完毕时执行的函数的 名字。

function addLoadEvent(newFunc){ //这当然是定义一个带有参数的函数了,函数名是addLoadEvent,把你函数作为参数传递。

var oldonload = window.onload; // 定义一个变量,把window.onload赋给oldonload,如果开始window.onload调用了A()函数,那么这里的oldonload就等于A();

if (typeof window.onload != "function") {

window.onload = func;

}

else {

window.onload = function(){

oldonload();

func();

}

}

}

//知道if,typeof,!=是什么意思下面就好理解了.

//先判断之前有没有通过window.onload调用函数,所以用typeof判断window.onload的类型.

//如没有调用,typeof window.onload != "function"返回的就是ture,执行window.onload = func;也就是window.onload会先调用你的函数newFunc();

//反之window.onload调用了函数,那么第一句的变量oldonload的值也就是被调用的函数A()了,判断 window.onload调用了函数,typeof window.onload != "function"返回的就是false;执行window.onload = function(){oldonload();func();},那么window.onload调用的就是一个匿名函数,这个匿名函数就会先调用 oldonload()函数(也就是A()函数),再调用你的newFunc()函数。

—http://www.cnblogs.com/joyan/archive/2010/06/29/1767577.html

 

nodeName 属性总是返回一个大写字母的值,即使元素在HTML文档里是小写字母。

确保onKeypress模仿onclick事件的行为:links[i].onkeypress=lind[i].onclick;

innerTtml 属性可以用来读写某个给定元素里的THML内容。其毫无细节可言,像一把大锤,但是需要把一大段HTML内容插入网页时,这个属性更适用。innerHTML是HTML的专有属性,不能用于任何其他标记语言文档,浏览器在呈现正宗的XHTML文档时会直接忽略其属性。

setAttribute方法并未改变文档的物理内容。在浏览器看了,DOM节点树才是文档。

文档碎片 document fragment

Ajax依赖于javascript,可能有浏览器不支持,搜索引擎的蜘蛛程序也不会抓取到有关内容。

服务器在向XMLHttpRequest对象发回响应时,该对象有许多属性可用,浏览器会在不同阶段更新readyStyle属性的值:0表示未初始化,1表示正在加载,2表示加载完毕,3表示正在交互,4表示完成。

Ajax应用主要依赖于服务器端处理,而非客户端处理。

若无绝对把握,一定要坚持nodeType属性值,有很多DOM方法只能用于元素节点,若用于文本节点会出错。

在对文档现有信息进行检索时,以下DOM方法最有用:getElementById;getElementByTagName;getAttribute;需要把信息添加到文档里去时,这些DOM方法最有用:creatElement;creatTextNode;appendChild;insertBefore;setAttribute

使用(X)HTML去搭建文档结构,用CSS设置文档的呈现效果,用DOM脚本实现文档的行为。

style属性是一个对象,文档里面的每个元素都是一个对象,每个元素都有一个style属性,他们也是一个对象。

+与-之间之类的操作符是保留字符,不允许用在函数或变量的名字里,也不能用在方法或属性的名字里。方法和属性其实是关联在某个对象上的函数和变量。若引用一个中间带减号的CSS属性,用驼峰命名法,font-family变为DOM属性fontFamily。element.style.fontFamily

DOM在表示样式属性时采用的单位并不总是与他们在CSS样式表里的设置相同。color属性设置为grey,用javascript代码检索出来值为grey,如果把其改为十六进制#999999,则用alert输出的时候,某些浏览器是以RGB个格式的颜色值(153,153,153)返回。

通过style属性获取样式有很大的局限性。style属性只能返回内嵌样式。DOM style属性不能用来检索在外部CSS文件里声明的样式。style对象的属性的值必须放在括号里,否则javascript会将把右边的值解释为一个变量。

在决定采用纯粹的CSS还是DOM来设置样式的时候,需要考虑:这个问题最简单的解决方案是什么;哪种解决方案会得到更多浏览器的支持。如果想改变某个元素的呈现效果用CSS若想改变其行为,用DOM。

className属性是一个可读写的属性,凡是元素节点 都有这个属性。element.className = value

标签:

给我留言

Copyright © 花未全开月未圆 保留所有权利.   Theme  Ality

用户登录