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

开始学习《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. Oracle 存储过程之通用分页查询

    在数据库中书写通用分页存储过程,有利于代码的维护以及执行效率的提升 create or replace procedure Sp_QueryDatePage ( tableName in varcha ...

  2. JavaScript中forEach的用法相关

    首先说下JavaScript的forEach的标准格式. 为数组中的每个元素执行指定操作. array1.forEach(callbackfn[, thisArg]) 参数 定义 array1 必需. ...

  3. jQuery基础---Ajax基础教程(二)

    jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一篇中, ...

  4. SQL高级查询的练习题

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

  5. hdu 4710 Balls Rearrangement

    题意就不说了,刚开始做我竟然傻傻地去模拟,智商捉急啊~~超时是肯定的 求出 a ,b 的最小公倍数,因为n够长的话,就会出现循环,所以就不要再做不必要的计算了.如果最小公倍数大于n的话,就直接计算n吧 ...

  6. JavaScript基本概念(变量和数据类型)

    1. 变量 在局部作用域中省略var操作符可以定义全局变量,但是这么做会导致该变量难以维护,且在严格模式下会导致抛出ReferenceError错误. 2. 数据类型(js共用6种数据类型,分别是 U ...

  7. oc block基本使用

    // // main.m // block基本使用 // // Created by Ymmmsick on 15/7/21. // Copyright (c) 2015年 Ymmmsick. All ...

  8. paip.QQ音乐导出歌单总结

    paip.QQ音乐导出歌单总结 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...

  9. Apache HTTP Server

    下载 http://rj.baidu.com/soft/detail/14824.html?ald 安装完成后,打开浏览器,输入http://localhost/ 如果显示: It works! 则代 ...

  10. auto, extern, register, static

    对于一个数据的定义,需要指定2中属性: 存储类型和数据类型: static int a; auto char c; register int d; 1 auto 2 extern 3 register ...