JavaScript的事件绑定(方便不支持js的时候)

 更新时间:2013年10月01日 14:42:56   作者:  
看了JavaScript DOM 编程艺术的Best Practices那章,才知道我们在制作网页的时候有很多东西需要考虑

首先,比如我们使用JavaScript来加强我们的网页,但是我们要考虑到,如果用户的浏览器不支持JavaScript,或者用户disable了JavaScript的功能,那我们的网页能不能正常显示呢?例如下面的例子,

复制代码 代码如下:
<a href = "#" onclick = "popUp('https://www.jb51.net') ; return false;">

其中popUp这个函数是自定义的,新打开一个窗口来限制URL中的网页。但是如果当客户端不支持时,那这个网页就不能正常工作了。所以我们在这样做的使用,也考虑到更多,使用如下的代码就会显得更加合适。

复制代码 代码如下:

<a href = "https://www.jb51.net" onclick = "popUp(this.href) ; return false;"> 

接着,作者以CSS为例子。在我们使用CSS的过程中,我们发现,除了我们使用了<link>把CSS文件给加载进来外,我们没有在我们的网页内容中加入任何css相关的代码,这样就能很好的把structure和style分开了,即我们的css的代码没有侵入我们的主要代码里面。这样就算客户端不知道css,但是我们的主要内容客户还是可以看到的,我们的内容结构也能在客户那里显示出来。所以JavaScript相当于behavior层,css相当于presentation层。JavaScript也能像CSS一样做到没有侵入性。下面是书上的一个例子。

复制代码 代码如下:

<a href = "https://www.jb51.net" onclick = "popUp(this.href) ; return false;">

上面这段代码已经能保证在客户端不支持JavaScript的情况下仍然可以正常的工作,但是上面的代码中出现了onclick这样的event handler。所以现在我们使用像CSS中的方式来完成我们所要的功能。如下:

复制代码 代码如下:

<a href = "https://www.jb51.net" class = "popup">

这样,我们能在这个页面加载完成的时候,执行window.onload中,来检测哪些<a>是使用了class,然后统一使用popUp的方法。如下代码

复制代码 代码如下:

var links = document.getElementsByTagName("a");
for (var i=0 ; i<links.length ; i++) {
 if (links[i].getAttribute("class") == "popup") {
  links[i].onclick = function() {
   popUp(this.getAttribute("href"));  //Attention use this in  this place. Because this is equals onClick = "popUp(this.href)"
   //so we cann't use links[i].
   return false;
  }
 }
}

这样就能更少地侵入我们html代码了。

  最后,作者讲了我们要做到向后兼容和JavaScript的最小化。向后兼容,我们可以使用类似if(document.getElementById)来测试这个方法时候存在,存在了才能使用。JavaScript代码的最小化主要是为了减少JavaScript,这样能加快我们网页的加载。

  下面我在看书的时候碰到不懂的问题,希望大虾们能帮忙解决一下。

   对于<script>应该放在哪里?JavaScript DOM编程艺术中所说的,我们可以把<script>放在</body>之前,不要放在<head></head>里,这样可以加快我们加载page的速度。不是很理解。

  

原文:

The placement of your scripts in the markup also plays a big part in initial load times. Traditionally,
we were told to always place scripts in the <head> portion of the document, but there's a problem with
that. Scripts in the <head> block the browser's ability to download additional files (such as images or
other scripts) in parallel. In general, the HTTP specification suggests that browsers download no more
than two items at the same time per hostname. While a script is downloading, however, the browser
won't start any other downloads, even on different hostnames, so everything must wait until the script
has finished.
If you're following the progressive enhancement and unobtrusive methodologies discussed earlier
in the chapter, then moving your <script> tags shouldn't be an issue. You can make your pages load
faster simply by including all your <script> tags at the end of the document, directly before the </body>

tag. When the scripts load, your window load events will still apply your changes to the document.

相关文章

  • 详解JavaScript 异步编程

    详解JavaScript 异步编程

    这篇文章主要介绍了JavaScript 异步编程的相关资料,文中讲解非常细致,帮助大家更好的理解学习JS,感兴趣的朋友可以了解下
    2020-07-07
  • 理解JavaScript中Promise的使用

    理解JavaScript中Promise的使用

    这篇文章主要为大家介绍了JavaScript中Promise的使用,本文先介绍 Promises 相关规范,然后再通过解读一个迷你的 Promises 以加深理解,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • JS的Ajax与后端交互数据的实例

    JS的Ajax与后端交互数据的实例

    今天小编就为大家分享一篇JS的Ajax与后端交互数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • ES6 十大特性简介

    ES6 十大特性简介

    这篇文章主要介绍了ES6 十大特性的相关资料,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
    2020-12-12
  • JS读写CSS样式的方法汇总

    JS读写CSS样式的方法汇总

    这篇文章主要为大家详细汇总了JS读写CSS样式的方法,内容详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • JS将数字转换成三位逗号分隔的样式(示例代码)

    JS将数字转换成三位逗号分隔的样式(示例代码)

    本篇文章主要是对JS将数字转换成三位逗号分隔的样式(示例代码)进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • JavaScript扩展运算符的学习及应用详情(ES6)

    JavaScript扩展运算符的学习及应用详情(ES6)

    这篇文章主要介绍了JavaScript扩展运算符的学习及应用详情(ES6),扩展运算符是ES6新增的一种运算符,他可以帮助我们简化代码,简化操作,具体相关知识感兴趣的小伙伴可以查看下面文章的简单介绍
    2022-08-08
  • 详解javascript事件绑定使用方法

    详解javascript事件绑定使用方法

    这篇文章主要为大家详细介绍了javascript事件绑定使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • uniapp微信小程序底部动态tabBar的解决方案(自定义tabBar导航)

    uniapp微信小程序底部动态tabBar的解决方案(自定义tabBar导航)

    tabBar如果应用是一个多tab应用,可以通过tabBar配置项指定tab栏的表现,以及tab切换时显示的对应页,下面这篇文章主要给大家介绍了关于uniapp微信小程序底部动态tabBar的解决方案,需要的朋友可以参考下
    2022-04-04
  • JS实现HTML标签转义及反转义

    JS实现HTML标签转义及反转义

    本文主要介绍了JS实现HTML标签转义及反转义的方法。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论