我似乎不明白这个:
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工作,我尝试了所有我能在网上找到的解决方案,想知道是否有人能帮忙?
不要那样做。
相反,通过调用attachEvent
/addEventListener
添加一个事件处理程序。
我知道我有点迟到了,但这也让我很烦恼,我终于得到了。
要让IE在onclick事件期间执行动态构建的代码,请执行以下操作:
- 为所有其他浏览器编写代码:element.setAttribute("onclick",object.varName+"method("+var+")")
- 使用自定义属性保存动态语句:element.setAttribute("exec",object.varName+"method("+var+")")
- 创建一个匿名函数,以在单击元素时执行存储在自定义属性中的语句:element.onclick=function(){eval(this.exec);}
这种方法适用于IE7浏览器模式下运行的IE9,以及当前版本的Chrome和Firefox。
需要注意的几件事:
首先,在我的情况下,我需要执行一个对象方法。要做到这一点,我需要知道对象的var名称,我在初始化类时将其设置为属性。因此,object.varName属性是我在运行时代码中创建和设置的。
其次,"exec"不是一个标准属性,这就是为什么它可以用来保存我要执行的字符串。但是,只要使用非标准属性,就可以随心所欲地调用它。
第三,这就是为什么它有效:IE,或者至少是IE7,只允许您将onclick事件设置为包含匿名函数。如果指定对象的方法或包含函数,该函数是在设置onclick属性时执行的,而不是在实际单击元素时执行的。在我的情况下,我无法构建匿名函数,因为变量在运行时会发生变化。因此,我动态地构建一个语句,然后将其存储在元素的属性中。onclick事件然后执行存储在该属性中的任何语句。
干杯。
当我这样做时,工作就像做梦一样:
if(navigator.userAgent.indexOf("MSIE 7.0") != -1){
document.getElementById("pb").onclick = function(){ eval( this.onClick ); };
}
只有ie7才会这么看。