刚刚开始自学前端,如果不对请指正;欢迎各位技术大牛指点。

开始学习《javascript dom编程艺术》,整理一下学习到的知识。今天刚刚看到第六章,记下get到的几个知识点。

优雅降级

看到版本翻译为预留退路,刚刚看到个名词,我觉得很奇怪,以前没有听说过啊。不过看到英文注释就知道了Graceful degradation不就是优雅降级么,听说过!

书中举了个例子,点击一个链接,弹出一个窗口的方法。

function popUp(WinURL){
window.open(WinURL,"popUp","width=320,height=480");
}

给出了两个反面典型

 <a href="#" onclick="popUp('http://www.example.com/');return false;">Example<a>
<a href="javascript:popUp('http://www.example.com/');">Example<a>

上面为内嵌事件处理函数,下面一行为javascript伪协议。两种处理方式的坏处就是如果浏览器不支持javascript,用户不能正常地使用。

给出的处理方式为

<a href="http://www.example.com/" onclick="popUp(this.href); return false;">Example</a>

向后兼容

向后兼容,考虑旧版本浏览器的兼容性,这个很好理解,给出一个例子

if (!getElementById)  return false; 

直正觉得get的是在美术馆例子中的一小段的代码的应用。这个小技巧不算是向后兼容了,应该算是函数优化了。

//显示图片方法
function showPic(whichPic){
if(!document.getElementById("placeholder")) return true;//如果不存在图片,返回true
//TODO 获得图片地址并替换
if(!document.getElementById("description")) return false;//如果不存在描述,返回false
//TODO 获得描述信息并替换
return false;
}
//绑定<a>的点击事件
links[i].onclick=function(){
return showPic(this)
}

上面是啥意思呢,就是说如果不能正常得到图片的结点,就返回true,那么onclick执行打开图片链接的功能,浏览跳转到一张图片的页面。如果能得到图片结点,那么得到的图片会显示在预留的位置,名为placeholder的容器里。这种功能我也能实现,不过没有他的这么简洁。

多个函数绑定onload函数

这个只给出代码,我觉得我再看这篇笔记的话,应该也能看懂的,就不多做解释了。这里只是把代码记录一下,收藏了~

function addLoadEvent (func) {
var oldLoad = window.onload;//先将现有的事件处理函数存到一个变量中
if(typeof window.onload!='function'){//如果还没有绑定任何函数,把新变量追加给它
window.onload=func;
}else{
window.onload=function(){
oldLoad();
func();//如果绑定函数,在新函数末尾追加
}
}
}
//简单地测试一下
function function_name (argument) {
console.log(argument);
}
addLoadEvent(function_name("hehe"));
addLoadEvent(function_name("haha"));

《javascript dom编程艺术》笔记(一)——优雅降级、向后兼容、多个函数绑定onload函数的更多相关文章

  1. javascript dom编程艺术笔记之图片库的改进

    dom的操作要遵守的原则 1.平稳退化 2.分离javascript 3.向后兼容 4.性能考虑 改进后的显示图片方法 function showpic(whichpic){ if(!document ...

  2. JavaScript DOM编程艺术 笔记(一)

    探测浏览器品牌版本代码-----浏览器嗅探 代码 JavaScript==ECMAScript java几乎可以部署在任何环境,js只应用于web浏览器 API是一组得到各方面共同认同的基本约定(元素 ...

  3. javascript dom编程艺术笔记第三章:DOM操作的5个基本方法

    JavaScript的 DOM操作,主要是对DOM这三个字母中D.O.M的操作.D代表的是document(文档),即我们可以使用javascript对文档进行操作,O代表的是object(对象),对 ...

  4. JavaScript DOM编程艺术 笔记(四)

    DOM document   object model(map) 家谱树---节点树 父 子  兄弟 元素节点  <div> 文本节点  内容 属性节点   value  src getE ...

  5. JavaScript DOM编程艺术 笔记(三)函数

    函数function 是在你的代码里随时调用的语句 每个函数是个短小的脚本,arguments,传递的参数 function name(arguments){ statements; } functi ...

  6. javascript dom 编程艺术笔记 第四章:图片库

    首先先建立一个html文件,建立一个图片库 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  7. JavaScript DOM编程艺术 笔记(二)语句操作

    操作 var total = (1+4)*5; year = year +1; year++; var message = "i am" + "girl"; 是 ...

  8. Javascript DOM 编程艺术(第二版)读书笔记——基本语法

    Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一 ...

  9. 《JavaScript DOM 编程艺术》 学习笔记

    目录 <JavaScript DOM 编程艺术> 学习笔记 第一章 js简史 第二章 js语法 准备工作 语法 第三章 DOM DOM中的D DOM中的O DOM中的M 第四章 js图片库 ...

随机推荐

  1. JavaScript 【跨浏览器处理XML,做个兼容】

    //兼容方法        function getXMLDOM(xmlStr) {            var xmlDom = null;            if (typeof windo ...

  2. Chrome浏览器切换到之前打开的标签页会重新加载

    这是谷歌的一种策略.当系统内存不足时,系统会自动从内存中舍弃标签页 在地址栏输入chrome://flags/#automatic-tab-discarding,设置为停用即可.

  3. week 与 strong区别 精辟的解释

    转:http://stackoverflow.com/questions/9262535/explanation-of-strong-and-weak-storage-in-ios5 觉得讲的很容易理 ...

  4. poj2752Seek the Name, Seek the Fame

    Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and ...

  5. linux 系统分区方案建议

    前言: 以前初识Linux时,对Linux系统安装时分区的选择,一点都不了解,导致几次没法进行下一步安装,因此就静下心来,专门拿出时间研究了研究这方面的知识: 以下内容就是以前通过研究Linux安装过 ...

  6. php 字符串是否存在

    /** * 方法库-字符串是否存在 * @param string $str :字符或字符串 * @param string $string :字符串 * @return string 例子: $st ...

  7. Stack的实现

    public class MyStack<AnyType> { private AnyType [] theItems; private final int DEFAULT_CAPACIT ...

  8. Oracle EBS-SQL (PO-1):检查供货比例异常.sql

    select distinct msr.sourcing_rule_name                     名称 , msi.description                      ...

  9. InputStream和OutputStream

    1.在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头) 2.任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象既然它能产 ...

  10. 怎样学习使用libiconv库

    怎样学习使用libiconv库 - My Study My Study About My Learn or Study etc. 怎样学习使用libiconv库 By Cnangel on Febru ...