-->

的onclick的setAttribute解决方法IE7(onclick setAttribute

2019-10-30 02:12发布

我似乎无法得到这样的:

top.document.getElementById("clickThis").setAttribute("onclick", "tinyMCE.execCommand('mceInsertContent',false,'<div style=\"width: 600px; margin: 0 auto .5em;\" class=\"wp-caption alignnone\"><a href=\"<?php echo $full_image_path; ?>\" rel=\"lightbox\" title=\"View in lightbox\"><img class=\"alignnone\" src=\"<?php echo $full_width; ?>\" alt=\"<?php echo $value; ?>\" /></a><p class=\"wp-caption-text\"><?php echo $get_image->caption; ?></p></div>');");

在IE7的工作,我已经尝试了所有的解决办法我能找到的网上和想知道如果有人可以帮助?

Answer 1:

不要那样做。

相反, 添加事件处理程序通过调用attachEvent / addEventListener



Answer 2:

我知道我有点晚了,但是这是窃听了我的地狱的过了,我终于得到它。

为了让IE浏览器的onclick事件中执行动态生成的代码,这样做:

  1. 写入所有其他的浏览器的代码:element.setAttribute( “点击”,object.varName + “方法(” + VAR + “)”);
  2. 使用自定义属性来保存您的动态声明:element.setAttribute( “执行”,object.varName + “的方法(” + VAR + “)”);
  3. 创建一个匿名函数来执行存储在我们的自定义属性的语句元素被点击时:element.onclick =函数(){的eval(this.exec); };

这种方法在IE9工作对我来说在IE7浏览器模式,以及Chrome和Firefox的最新版本上运行。

一对夫妇的注意事项:

首先,在我的情况,我需要执行对象的方法。 要做到这一点,我需要知道的对象,这是我发起的类时设置为一个属性变量名称。 所以object.varName属性是一个我创建,并在我的运行时代码设置。

其次,“执行”是不是一个标准的属性,这就是为什么它的工作原理持有我想执行的字符串。 但是你可以叫它任何你想,只要你使用一个非标准的属性是什么。

三,在这里就是为什么这个工程:IE,或至少IE7,只会让你设置onclick事件包含一个匿名函数。 如果分配对象的方法或包含函数的变量,当onclick属性被设置时,元件被实际点击而不是被执行的功能。 在我的情况下,由于变量在运行时改变我不能建立一个匿名函数。 所以不是,我动态构建,然后存储在元素的属性的声明。 onclick事件然后执行任何语句存储在该属性。

干杯。



Answer 3:

工作就像一个梦,当我这样做:

if(navigator.userAgent.indexOf("MSIE 7.0") != -1){

    document.getElementById("pb").onclick = function(){ eval( this.onClick ); };
}

这种方式只IE7看着它。



文章来源: onclick setAttribute workaround for IE7