IE浏览器的onclick setAttribute解决方法

时间:2011-06-14 17:00:17

标签: javascript internet-explorer-7 setattribute

我似乎无法得到这个:

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中工作,我已尝试过在网上找到的所有解决方法,并想知道是否有人可以提供帮助?

3 个答案:

答案 0 :(得分:2)

不要那样做。

而是add an event handler致电attachEvent / addEventListener

答案 1 :(得分:1)

我知道我有点迟了,但这也让我感到害怕,我终于得到了它。

要让IE在onclick事件期间执行动态构建的代码,请执行以下操作:

  1. 为所有其他浏览器编写代码:element.setAttribute(“onclick”,object.varName +“method(”+ var +“)”);
  2. 使用自定义属性来保存动态语句:element.setAttribute(“exec”,object.varName +“method(”+ var +“)”);
  3. 创建一个匿名函数,在单击该元素时执行存储在我们的自定义属性中的语句:element.onclick = function(){eval(this.exec); };
  4. 这种方法适用于IE9在IE7浏览器模式下运行,以及当前版本的Chrome和Firefox。

    有几点需要注意:

    首先,就我而言,我需要执行一个对象方法。为此,我需要知道对象的var名称,我在启动类时将其设置为属性。所以object.varName属性是我在运行时代码中创建和设置的属性。

    其次,“exec”不是标准属性,这就是它保存我想要执行的字符串的原因。但只要您使用非标准属性,就可以随意调用它。

    第三,这就是为什么这样做的原因:IE,或者至少IE7,只允许你设置onclick事件来包含一个匿名函数。如果指定对象的方法或包含的变量 一个函数,该函数在设置onclick属性时执行,而不是在实际单击元素时执行。就我而言,我无法构建匿名函数,因为变量在运行时会发生变化。因此,我动态地构建一个语句,然后将其存储在元素的属性中。然后onclick事件执行该属性中存储的任何语句。

    干杯。

答案 2 :(得分:0)

当我这样做时,

像梦一样工作:

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

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

这种方式只有ie7看着它。