战剑网络,网站建设,系统开发,程序设计

搜索Top
完美解决一个事件激活多个函数


搜索关键字:

 如果你的网页中一个“onload”事件要激活两个以上的javascript函数,那怎么办呢?小阳曾查阅了不少资料,结果都不尽如人意,无非是程序员根据情况,把要激活的函数统一放在一个函数里激活。

  但作为一个程序员,编写的代码的适用性是很重要的。请看下面一个例子:

  

  运行后你会发现,它只跳出一个“这是js脚本调用的函数”的警告框。< body>标签中要求激活的函数被“忽略”了。当然你可以运用前面提过的方法,把两个函数放一个函数里激活。但这样有不少弊端,特别是如果把这段javascript代码写成一个"myjs.js"文件,要用它的话直接加上< script language="javascript" src="myjs.js">< /script>即可,但如果还要在引用文件的页面中根据情况修改标签或者添加一段代码,多麻烦呀。这就降低了代码的适用性了。

  可不可以在编写javascript代码时就设计好,如果前面onload事件已经有函数要激活,让它仍然激活前面的函数,但同时也激活本段代码所需要的函数?答案是肯定的。我们先看下这段代码:

  

  运行后其中一个警告框中提示:

  function anonymous()


  {
  alert("这是标签调用的函数")
  }

  发现什么了吗?“document.body.onload.tostring()”就是上面这段函数代码!我们这段字符串作为代码的一部分运行,那么我们就多了一个函数“anonymous()”,于是将这个函数和我们现在需要激活的函数一起激活就行了!

  下面我们以第一次提到的代码为例进行修改,得到最终代码:

  

 

  上段代码中,变量myactive是js代码中要激活的函数,eval(string)函数是把其字符串参数当作是javascript脚本来运行。我们把document.body.onload.tostring()中的“anonymous()”替换为“bodyload()”,得到一个新函数“bodyload()”,它包含了所有原来要激活的函数,再把函数“bodyload()”和我们要激活的函数一起在onload事件中激活。

  为什么要把“anonymous()”替换为“bodyload()”呢?因为这个方法适用于所有事件(例如onmouseover),而所有事件tostring()都是得到“anonymous()”,为了不和其它事件也用了这个方法冲突,我们把它替换掉。在其它事件中也依此替换即可。

  好了,我们运行一下最终代码,如你所愿地两个函数都激活了吧?添加的代码也挺简单,有挺强的适用性。


[ 打印本页 ] [ 收藏本页 ]

[上一篇]:javascript加密解密终级指南
[下一篇]:值得收藏的几个有用的Javascript脚本
 ·十大高招让你摆脱莫名黑客的网络攻击
 ·利用Windows的自带命令实现宽带自动连接
 ·说说大型高并发高负载网站的系统架构
 ·值得收藏的一些HTML、JavaScript、ASP代码
 ·值得收藏的几个有用的Javascript脚本

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
搜索Top

关于我们 - 联系我们 - 广告业务 - 友情链接 - 网站制作 - 留言板 - 会员注册
All Right Zjm.Net.Cn (zjm Enterprise v3.0)
联系电话:0576-8603312 地址:浙江省台州市经济开发区
技术支持:点击这里给我发消息280610248 业务: 点击这里给我发消息40520767 客服: 点击这里给我发消息441758646
E-mail:zjm@zjm.net.cn 备案证书号:浙ICP备06030047号