关联的 script 标签

作者:手气不错 来源:Gracecode.com 时间:2009-11-02 10:40:00 

又从 James Padolsey 这里得到个好的点子。

在实际写脚本过程中可能有段 Javascript 和 HTML 非常相关(比如实例化 Slider 等这样组件),那么通常我们会将它紧放到 HTML 的后面。

“传统”的做法需要顾虑的点有很多。因为脚本是立即被执行的,所以要考虑例如调用的组件是否已经声明,以及如果有 Ajax 请求是否会堵死浏览器等等。

下面的代码就是本篇 Blog 提供的另个思路,但愿我看起来不是那么的火星:

<div id="some-div">    <script type=":contextual">        alert(this.id); // "some-div" is alerted    </script></div>

原文作者的想法是改变 script 标签的 this 指向到父节点的 Element,从而关联上下文 HTML 结构。

看它的实现代码:

<script type="text/javascript">~function() {    var scripts = document.getElementsByTagName('script'),        script, i = 0;    while ((script = scripts[i++])) {        if (/:contextual$/.test(script.type)) {            (new Function(script.innerHTML)).call(script.parentNode);        }    }}();</script>

不过如原作者所说的外,其实还有很多顺带的好处

  1. 将 this 指向关联到父节点,遍历查找 DOM 非常的方便

  2. 相关的 script 标签和 HTML 结合紧密,很清楚就能明白这段脚本需要做什么

  3. 统一调用,可以考虑懒加载

  4. 方便复制粘贴 :^)

当然,上面的代码仅仅是个想法而已,在实际编码中还需谨慎应用。滥用此方法可以预料到的 些问题,比如:

  1. 脚本执行顺序改变

  2. 弄乱作用域,如果你的代码严重依赖 this ,那么将会是个噩梦(当然,这本身也不是个好习惯)

  3. 让不了解此机制的其他开发者迷惑

正如原作者所言,在我们写代码的时候能“Thinking outside the box”,那才是最重要的 :^)

标签:script,标签,JavaScript
0
投稿

猜你喜欢

  • 陌生网页交互行为分析(1)——奇怪的关闭按钮

    2009-01-08 12:22:00
  • 如何调用Oracle存储过程?

    2009-11-15 20:13:00
  • Linux环境MySQL服务器级优化讲解

    2008-12-04 17:21:00
  • 用DIV+CSS编写出的网页中的圆角矩形

    2007-10-14 16:03:00
  • SQL Server 2005改进后的几个实用新特性

    2008-05-07 19:16:00
  • 如何测试字符串的长度?

    2009-11-11 20:02:00
  • 怎样在MySQL数据库中导出整个数据库

    2008-12-31 15:13:00
  • 简写一个的lightbox显示隐藏层效果(兼容)

    2010-07-23 20:02:00
  • 单选的radia,和多选的checkbox如何判定选择?

    2008-11-26 12:29:00
  • sqlserver 快速生成汉字的首拼字母的函数(经典)

    2012-06-06 20:16:41
  • Oracle数据库性能优化技术开发者网络Oracle

    2010-07-18 13:05:00
  • SQL Server数据库搭建农村信息化的方案

    2009-01-23 14:16:00
  • css hack简易的“独享”与“交集”

    2008-08-31 20:17:00
  • 利用OBJECT_DEFINITION函数来代码存档

    2009-01-20 15:34:00
  • Shellcode加密解密函数

    2009-04-24 11:18:00
  • 教你快速实现 MySQL查询结果的分页显示

    2008-11-27 16:17:00
  • 对于任意的XML的遍历

    2008-09-05 17:11:00
  • 如何利用SQL Server 2005中的模板参数

    2009-01-23 15:02:00
  • 分享13款非常有用的jQuery插件

    2011-05-16 19:07:00
  • 各个版本IE合集下载,共存无冲突

    2007-11-29 13:12:00
  • asp之家 网络编程 m.aspxhome.com