当前位置:主页 > 基金 > 正文

该方法不检测IE版本号,而是经过try/catch来模糊

04-08 基金

  单位里有一套往事宣布系统,是很早之前的了,不时在用,eWebEditor是甚么版本的也弄不清了,但必然是老版本。

  前一段时间也出了后果,在IE8上按钮掉效,经过百度以后,处理计划简直全都一样,都是五花八门的辨别IE版本然后履行对应的匿名方法。

  出后果的是editor.js中的这句:if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");

  而处理计划,无一例外的都是两种

  1、

  该计划用版本检测的方法,针对分歧IE版本,调用分歧函数称号来处理,但后果在于IE的后续版本风行起来的话又要参与版本号来辨别了,假设IE又修改了函数名就会辨别起来更费事了。

  2、

  3、这就是我设计的处理计划了

  翻遍收集,仿佛只要这两种处理计划,看来是转来转去的成了规范处理计划了。团体看法,这两种方法代码过量不说,而且还没法应对IE升级后有能够再次变卦函数名的后果。仔细剖析这段有后果的代码就会发明,其实element.YUSERONCLICK属性里寄存的是一段function的定义,alert一下就会看到代码字符串以下:

  完整地来看,就是用eval来履行一个js代码片段以下:

  因为IE的升级变更,招致anonymous()函数名爆发变更,但我们在代码里把函数名作为常量字符串应用时,这类变更就不能适应了。

  固然我们也能够用提取字符的方法把函数名从代码段里联系出来,然后拼凑起代码段来履行,固然方法没后果,但还不够繁复。

  其实应用JS的静态特点,我们完整可以在不用知道函数名也不用静态提取函数名的状况下直接准确的履行该函数

  终究代码会比源代码还节俭代码字节,只需将函数名交换成一对括号便可以处理了:

  如许一处理,不单没添加代码,反而减肥了,而且不论IE升级版本后函数名酿成甚么都无所谓了,只需IE不撤消这个匿名功用函数就会与日俱增。

  4、关于本文的后记

  时隔两年以后的明天(2014-10-20)因为又处理了一同老版本ewebeditor的匿名函数缺点,再次翻出了自己的博文。无聊之际到维普网搜了一下关键字“ewebeditor”,眼前一亮发清晰明了一篇论文援用了本博文中的处理计划,时间是在本博文整顿终了不久的同年(2012年)。

  晕啊,有同学援用了本文居然不时不知道啊。

  特此备注一下,满足一下小小的虚荣心,好歹咱的博文也是参考文献了,上层次了,噢耶Y。

版权保护: 本文由 主页 原创,转载请保留链接: http://www.kmxxfk.com/a/jj/20200408-504.html

博客主人bbinapp下载
bbinapp下载不断追求更高质量的服务,bbinapp下载提供中超、国际体育新闻,汇聚英超、西甲、德甲、意甲四大联赛足球热点,bbinapp下载将再接再厉,以打造业内第一品牌为目标,是客户的第一选择!
  • 文章总数
  • 64195访问次数
  • 建站天数
  • 标签

    友情链接