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

2016-01-29 11:33 40 1 收藏

完美解决一个事件激活多个函数,完美解决一个事件激活多个函数

【 tulaoshi.com - Javascript 】

 

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

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

  

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

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

  

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

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

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

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

  

 

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/javascript/)

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

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/javascript/) 

来源:https://www.tulaoshi.com/n/20160129/1482653.html

延伸阅读
标签: Web开发
ff下onmousemove鼠标按不按都是1所以就不能这样用了 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
标签: PHP
  之所以是能写出来这个函数,主要是对该网站的session结构清楚,如:name|s:4:"tasm";passwd|s:6:"111111";mode|s:1:"1",也知道该session存放的位置,而且可以上传文件,所以嘛,当时就做了一次小小的黑客,在线的朋友的密码可以一览无余,呵呵: <? function submit1(){ global $username; print ...
标签: word
Word如何一个括号内插多个编号   个括号内插多个编号 先插一个编号→点击这个编号(这个操作非常重要否则会得到图 中间那种结果)→再插另一个编号得到图 左那样结果 图 一个括号内多个编号(不同结果) 补充话题 在我们行业的杂志中,如果有一处的编号是(2;3;4)那么编辑会要求写成(2-4)--这个问题叫Word怎么做?...
标签: PHP
  前面见到有人发表 但是速度比较慢,也非常长 这里给出一种 function ubb($str) {   $color=Array('red','blue','green'); $str=eregi_replace('\[url\]([a-zA-Z0-9@:%_.~#-\?&]+)\[\/url\]','<a href=http://\\1\\1</a',$str);//url $str=eregi_replace('\[url=http://([a-zA-Z0-9@:%_.~#-\?&]+)\](.+)...
标签: Web开发
select id="Year" name="Year"option value=""/option/select年 select id="Month" name="Month"/select月 select id="Day" name="Day"/select日br / select id="iYear" name="iYear"option value=""/option/select年 select id="iMonth" name="iMonth"/select月select id...

经验教程

670

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部