内容简介 · · · · · ·
《Web开发系列·ppk谈JavaScript》全方位介绍了JavaScript,主要讨论了浏览器兼容性、可访问性、底层语法以及与HTML结构层的协同等问题。书中既包括理论性的讲解,又给出了相关的示例脚本以进行进一步阐述。《Web开发系列·ppk谈JavaScript》通过8个真实项目示例,介绍了JavaScript核心语言、BOM、事件处理、DOM、修改CSS样式表以及数据检索等内容。
作者简介 · · · · · ·
Peter-Paul Koch(即ppk)是自学成才的世界级JavaScript专家,1970年生于荷兰阿姆斯特丹,大学主修古希腊罗马史专业。他拥有多年客户端web开发经验,所维护的网站www.quirksmode.org已成为全球JavaScript开发人员最重要的参考资源之一。他常年为业界顶尖的媒体 Digital Web Magazine、A List Apart等撰写技术文章,包括影响深远的The JavaScript Manifesto。
豆瓣成员常用的标签(共70个) · · · · · ·
丛书信息
图灵程序设计丛书 (共78册),
这套丛书还有
《.NET设计规范》,《短码之美》,《计算机程序设计艺术(第3卷 英文版·第2版)》,《深入解析C#》,《软件框架设计的艺术》 等。
喜欢读"ppk 谈 JavaScript"的人也喜欢 · · · · · ·
按有用程度 按页码先后 最新笔记
-
第320页
L.ost (World's End No Girlfriend)
第七章 鼠标事件、键盘事件,略过。 接口事件: change—只能用于表单域的元素,如下拉选框、复选框、单选框、文本输入框... contextmenu—用户在点击右键是促发,常被用于禁止用户查看页面源码 /代码内容已省略/ submit—提交表达动作,书上说用js的submit()方法提交表单不会触发,实际上可以。 resize—改变浏览器窗口大小时触发,scroll—滚动时触发。 事件处理器: (更多)第七章鼠标事件、键盘事件,略过。接口事件:change—只能用于表单域的元素,如下拉选框、复选框、单选框、文本输入框...contextmenu—用户在点击右键是促发,常被用于禁止用户查看页面源码document.oncontextmenu = function() { return false; }submit—提交表达动作,书上说用js的submit()方法提交表单不会触发,实际上可以。resize—改变浏览器窗口大小时触发,scroll—滚动时触发。事件处理器:var a = document.getElementById('somewhere'); a.onclick = somefunc;方法不能加(),因为我们需要把函数somefunc传递给a.onclick,而不是传somefunc()的返回值。W3C模型:x.addEventListener('click',somefunc,ture);第一参数-事件名称,没有on前缀。第二参数-执行函数第三参数-(false)事件冒泡,(true)事件捕获微软模型:x.attachEvent('onclikc',somefunc);第一参数-事件名称,有on前缀第二参数-执行函数,没有圆括号高级事件注册模型都不是跨浏览器的,所以可以用到辅助函数,或者使用传统模型function addEventSimple(obj, evt, fn) { if (obj.addEventListener) obj.addEventListener(evt, fn, false); else if (obj.attachEvent) obj.attachEvent('on'+evt,fn); } function removeEventSimple(obj, evt, fn) { if (obj.removeEventListener) obj.removeEventListener(evt, fn, false); else if (obj.detachEvent) obj.detachEvent('on'+evt,fn) }事件捕获:从document开始,沿文档树向下游历,直到事件目标。事件冒泡:事件从目标开始,沿着文档树向上冒泡,直到document。而在W3C模型中,捕获和冒泡都会发生,事件捕获先发生,接着是冒泡。W3C stopPropagaction() 微软的 cancelBubble = true 来取消事件传播。在W3C和微软模型中,取得event对象的方式不同。function handleEvent(e) { var evt = e || window.event; //取得event对象 }鼠标位置:(兼容性问题严重) offsetX offsetY;pageX,pageY.....鼠标按键:(兼容性问题严重) W3C:L=0,M=1,R=2; 微软:L=1,M=4,R=2键盘属性: 键盘keyCode对应数字 :http://www.cnblogs.com/analyzer/articles/1052299.html 获取目标对象:W3C与微软的不同function handleEvent(e) { var evt = e || window.event; var evtTarget = evt.target || evt.srcElement; }第8章 DOMdocument是文档节点,HMTL标签是元素节点,而标签中的文字则是文本节点,这点常被忘记。比如在取<p>ppk on javascript</p>中的文字时,应该这样document.getElementsByTagName('p')[0].firstChild.nodeValue;长途旅行:getElementByxxx()短途旅行:parentNode,firstChild,lastChild,previousSibling,nextSibling,childNodes[]节点属性:nodeName,nodeValue,nodeType...修改文档树:appendChild(),removeChild(),createElement()...createTextNode()不支持某些符号,可以使用innerHTML.cloneNode(),接受true,false两个可选值,true表示克隆包括所有子节点,fasle则不会。且不会克隆节点上的事件处理。使用innerHTML创建复杂的树结构。0级DOM,document.imgas[] 等同于document.getElementByTagName('img')表单域可以这样访问 document.forms[].elements[]DOM超空间:var x = document.getElementById('test'); x.parentNode.removeChild(x); document.body.appendChild(x);test虽然被移除,但是x仍然指向这个元素,所以它仍可以被访问。且超空间内的元素不会具有父节点。第9章CSS 略第10章 AJAX有关 (收起)2011-08-24 13:34:12 回应
-
第190页
L.ost (World's End No Girlfriend)
第一章的故事带过。 第二章 2002年,Stuart Langridge 发明了一个新词汇:无入侵脚本编程(unobstusive scripting)。 1.可用的,至少要给网站带来好处。 2.可访问的,即当js失效是,网页仍可访问与阅读。 3.它是容易实现的。 4.分离的,存在与js文件中,而不是散布在html的各个角落。 表现层(CSS)、结构层(HTML)、行为层(JS),为了代码的简介和维护,应该分离。 CSS中的hover,原生的js貌似没有,jquery可以实.. (更多)第一章的故事带过。第二章2002年,Stuart Langridge 发明了一个新词汇:无入侵脚本编程(unobstusive scripting)。1.可用的,至少要给网站带来好处。2.可访问的,即当js失效是,网页仍可访问与阅读。3.它是容易实现的。4.分离的,存在与js文件中,而不是散布在html的各个角落。表现层(CSS)、结构层(HTML)、行为层(JS),为了代码的简介和维护,应该分离。CSS中的hover,原生的js貌似没有,jquery可以实现。至于不支持js,没有鼠标,屏幕阅读器等问题,作者也考虑到很详尽。window.location下的href属性和replace()方法相似,但replace()将覆盖之前的历史记录。第三章 浏览器没有提到chrome,看来翻译的时候chrome还不存在。谈到兼容性问题。记住一点,你的脚本永远不能在100%的浏览器中工作,永远。navigator.userAgent获取浏览器信息。第四章输入框字数统计,relatedElement属性,当文本框输入时,h2同时更新var db_comment = document.getElementsByName('comment')[0]; db_comment.addEventListener('keyup',function(){ currentLength = this.value.length; var maxLength = 128; if(currentLength > maxLength){ alert('字数超出'); } this.relatedElement.firstChild.nodeValue = maxLength - currentLength; },true); GM_addStyle('.countor{font-weight:600;font-size:14;color:#999999;margin:5px 0 0 5px;}') var countor = document.createElement('h2'); countor.className = 'countor'; countor.innerHTML = '128'; db_comment.parentNode.insertBefore(countor,db_comment.nextSibling); db_comment.relatedElement = countor;第五章===与!== 严格的判断符,要求要有相同的数据类型。变量前 var 为局部变量,否则为全局变量。Array的方法:push,shift,pop,unshift第六章window对象是BOM的核心,包含的了document对象。窗口的属性,window和self都指向了窗口本身。status,就是状态栏。过去常常被用来装酷。还记得大学一次测验还写过在状态栏上的文字走马灯效果,不过现代浏览器大都已经不再显示状态栏了。以下代码,可以绕过简单的窗口过滤器,打开恶心的新窗口。var popup document.onclick = function(){ popup = window.open('url','name','arguments'); }window.location,包含页面当前位置信息。window.history,页面历史记录。screen,包含窗体有关信息。 (收起)2011-08-22 16:53:23 回应
-
第320页
L.ost (World's End No Girlfriend)
第七章 鼠标事件、键盘事件,略过。 接口事件: change—只能用于表单域的元素,如下拉选框、复选框、单选框、文本输入框... contextmenu—用户在点击右键是促发,常被用于禁止用户查看页面源码 /代码内容已省略/ submit—提交表达动作,书上说用js的submit()方法提交表单不会触发,实际上可以。 resize—改变浏览器窗口大小时触发,scroll—滚动时触发。 事件处理器: (更多)第七章鼠标事件、键盘事件,略过。接口事件:change—只能用于表单域的元素,如下拉选框、复选框、单选框、文本输入框...contextmenu—用户在点击右键是促发,常被用于禁止用户查看页面源码document.oncontextmenu = function() { return false; }submit—提交表达动作,书上说用js的submit()方法提交表单不会触发,实际上可以。resize—改变浏览器窗口大小时触发,scroll—滚动时触发。事件处理器:var a = document.getElementById('somewhere'); a.onclick = somefunc;方法不能加(),因为我们需要把函数somefunc传递给a.onclick,而不是传somefunc()的返回值。W3C模型:x.addEventListener('click',somefunc,ture);第一参数-事件名称,没有on前缀。第二参数-执行函数第三参数-(false)事件冒泡,(true)事件捕获微软模型:x.attachEvent('onclikc',somefunc);第一参数-事件名称,有on前缀第二参数-执行函数,没有圆括号高级事件注册模型都不是跨浏览器的,所以可以用到辅助函数,或者使用传统模型function addEventSimple(obj, evt, fn) { if (obj.addEventListener) obj.addEventListener(evt, fn, false); else if (obj.attachEvent) obj.attachEvent('on'+evt,fn); } function removeEventSimple(obj, evt, fn) { if (obj.removeEventListener) obj.removeEventListener(evt, fn, false); else if (obj.detachEvent) obj.detachEvent('on'+evt,fn) }事件捕获:从document开始,沿文档树向下游历,直到事件目标。事件冒泡:事件从目标开始,沿着文档树向上冒泡,直到document。而在W3C模型中,捕获和冒泡都会发生,事件捕获先发生,接着是冒泡。W3C stopPropagaction() 微软的 cancelBubble = true 来取消事件传播。在W3C和微软模型中,取得event对象的方式不同。function handleEvent(e) { var evt = e || window.event; //取得event对象 }鼠标位置:(兼容性问题严重) offsetX offsetY;pageX,pageY.....鼠标按键:(兼容性问题严重) W3C:L=0,M=1,R=2; 微软:L=1,M=4,R=2键盘属性: 键盘keyCode对应数字 :http://www.cnblogs.com/analyzer/articles/1052299.html 获取目标对象:W3C与微软的不同function handleEvent(e) { var evt = e || window.event; var evtTarget = evt.target || evt.srcElement; }第8章 DOMdocument是文档节点,HMTL标签是元素节点,而标签中的文字则是文本节点,这点常被忘记。比如在取<p>ppk on javascript</p>中的文字时,应该这样document.getElementsByTagName('p')[0].firstChild.nodeValue;长途旅行:getElementByxxx()短途旅行:parentNode,firstChild,lastChild,previousSibling,nextSibling,childNodes[]节点属性:nodeName,nodeValue,nodeType...修改文档树:appendChild(),removeChild(),createElement()...createTextNode()不支持某些符号,可以使用innerHTML.cloneNode(),接受true,false两个可选值,true表示克隆包括所有子节点,fasle则不会。且不会克隆节点上的事件处理。使用innerHTML创建复杂的树结构。0级DOM,document.imgas[] 等同于document.getElementByTagName('img')表单域可以这样访问 document.forms[].elements[]DOM超空间:var x = document.getElementById('test'); x.parentNode.removeChild(x); document.body.appendChild(x);test虽然被移除,但是x仍然指向这个元素,所以它仍可以被访问。且超空间内的元素不会具有父节点。第9章CSS 略第10章 AJAX有关 (收起)2011-08-24 13:34:12 回应
-
第190页
L.ost (World's End No Girlfriend)
第一章的故事带过。 第二章 2002年,Stuart Langridge 发明了一个新词汇:无入侵脚本编程(unobstusive scripting)。 1.可用的,至少要给网站带来好处。 2.可访问的,即当js失效是,网页仍可访问与阅读。 3.它是容易实现的。 4.分离的,存在与js文件中,而不是散布在html的各个角落。 表现层(CSS)、结构层(HTML)、行为层(JS),为了代码的简介和维护,应该分离。 CSS中的hover,原生的js貌似没有,jquery可以实.. (更多)第一章的故事带过。第二章2002年,Stuart Langridge 发明了一个新词汇:无入侵脚本编程(unobstusive scripting)。1.可用的,至少要给网站带来好处。2.可访问的,即当js失效是,网页仍可访问与阅读。3.它是容易实现的。4.分离的,存在与js文件中,而不是散布在html的各个角落。表现层(CSS)、结构层(HTML)、行为层(JS),为了代码的简介和维护,应该分离。CSS中的hover,原生的js貌似没有,jquery可以实现。至于不支持js,没有鼠标,屏幕阅读器等问题,作者也考虑到很详尽。window.location下的href属性和replace()方法相似,但replace()将覆盖之前的历史记录。第三章 浏览器没有提到chrome,看来翻译的时候chrome还不存在。谈到兼容性问题。记住一点,你的脚本永远不能在100%的浏览器中工作,永远。navigator.userAgent获取浏览器信息。第四章输入框字数统计,relatedElement属性,当文本框输入时,h2同时更新var db_comment = document.getElementsByName('comment')[0]; db_comment.addEventListener('keyup',function(){ currentLength = this.value.length; var maxLength = 128; if(currentLength > maxLength){ alert('字数超出'); } this.relatedElement.firstChild.nodeValue = maxLength - currentLength; },true); GM_addStyle('.countor{font-weight:600;font-size:14;color:#999999;margin:5px 0 0 5px;}') var countor = document.createElement('h2'); countor.className = 'countor'; countor.innerHTML = '128'; db_comment.parentNode.insertBefore(countor,db_comment.nextSibling); db_comment.relatedElement = countor;第五章===与!== 严格的判断符,要求要有相同的数据类型。变量前 var 为局部变量,否则为全局变量。Array的方法:push,shift,pop,unshift第六章window对象是BOM的核心,包含的了document对象。窗口的属性,window和self都指向了窗口本身。status,就是状态栏。过去常常被用来装酷。还记得大学一次测验还写过在状态栏上的文字走马灯效果,不过现代浏览器大都已经不再显示状态栏了。以下代码,可以绕过简单的窗口过滤器,打开恶心的新窗口。var popup document.onclick = function(){ popup = window.open('url','name','arguments'); }window.location,包含页面当前位置信息。window.history,页面历史记录。screen,包含窗体有关信息。 (收起)2011-08-22 16:53:23 回应
书评 · · · · · · (共14条) 我来评论这本书
热门评论 最新评论
这本书是学习js的开始,而不是结束
-
- Charles Tang 我不是一个专业的Web开发人员,那只是我的兴趣爱好,我是一个blogger,热衷于定制自己的Blog,javascript在这过程中终究不能避免,于是就这么上手了。 早期,我在Blogger上移植过别人写的Calendar,Music Player,那个时候,正是javascript刀耕火种的时候,那个时候还没有...... (4回应)2008-12-26 17/17有用
很好的书
-
- mikeyao 作者ppk是这个领域里的高手,在他的个人网站有非常好的JavaScript的教程。在各大国外的web开发网站上都有的他的文章。David Flanagan的"JavaScript, the Definitive Guide"第五版的英文版已经出版,其中17-19章是他所写。足以表示了他的实力。学习web开发的人,可以关...... (4回应)2006-07-12 7/8有用来自 New Riders Press2006版
《PPK谈JS》书评
-
- George Wing(勿在浮沙筑高台) PPK 在JavaScript界鼎鼎大名,他的《ppk 谈 JavaScript》这本书口碑极佳。在译书还未上市前我先看了 Realazy的blog:《ppk on JavaScript 笔记》,所以对该书有了大概的了解,知道这是本什么内容的书,适合什么水平层次的人来阅读。 本书适合想要得到跨 web 浏览器JS开......2008-11-13 3/3有用
ppk on JavaScript, 1/e
-
- 涅瓦纳(一个沉默的观影者与读书人) Book positioning When I started writing the book I had a pretty good idea where I wanted it to fit into the JavaScript book market. Basically I wanted it to be ......2011-07-30 来自 New Riders Press2006版
学习的开始
-
- AvenirZheng(Twitter:@avenirzheng) 正如后记所说的,这本书应该是学习的开始,而不是结束,作者功力无容置疑,作者分享了大量开发经验,和对可访问性、可用性的关注。......2010-06-25
一本介绍js与html交互的好书
-
- 老田 ppk算是比较扎实,多年的研究成就了quirksmode.org和他的这本书。翻译的一般,但是没有影印版卖,只好看中文版了。 章节结构比较散,但是可以理解,毕竟,js在不同浏览器,不同文档类型中区别太多太乱了。ppk能够深入到这个层次,给我们参考,已是很不容易。如果想了解js+dom+css+跨浏览器,推荐这本书。...... (1回应)2009-05-12
ppk说ajax是个垃圾应用
-
- jasonbai 看了这部书才知道ajax早在外国有了流行 国内基本延迟3年左右,ppk说ajax说ajax只是javascript加语言堆砌加N多所谓框架...新手,暂时没判断力......... (4回应)2009-04-15 1/1有用
主要译者比较让人放心
-
- 靛海幽蓝 本书优点见其他书评,我就不重复了。 中文版主要有一点,译者是淘宝UED,比较让人放心,我自己看下来就是这样的感觉:书中有多处注释,是译者对作者描述不清楚的地方甚至错误的地方进行了说明,有不确定的地方也进行了实践检查之后进行了注释。见了太多原作优秀译作垃圾的书,这个是最让人放心的一次了。 一般的学习方法可能是......2009-02-19 1/2有用
"ppk 谈 JavaScript"的论坛 · · · · · ·
这本书的其他版本 · · · · · · ( 全部2 )
- New Riders Press版 2006-09-20 / 54人读过 / 有售
以下豆列推荐 · · · · · · (全部)
- Web前端技术 (3fun4)
- Books of DOM/Ajax/Javascript (EN/CN) (zonovo)
- 互联网书系 (jasonbai)
- 复杂关七的文景世界 (关七)
- valdanito读过+在读 的设计书以及相关书籍... (valdanito)
谁读这本书?
喜欢这本书的人常去的小组 · · · · · ·

- D2前端技术论坛 (1229)

- ECMAScript (337)

- 博文视点交流组 (420)

- WEB标准 (3796)

- WebRebuild (456)

- node.js (963)

- javascript (2587)

- Web标准化交流会 (490)
喜欢这本书的人关注的活动 · · · · · ·
订阅关于ppk 谈 JavaScript的评论:
feed: rss 2.0











