0

我似乎无法得到这个:

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

4

3 回答 3

2

Don't do that.

Instead, add an event handler by calling attachEvent / addEventListener.

于 2011-06-14T17:02:06.333 回答
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 ); };

这种方法适用于在 IE7 浏览器模式下运行的 IE9 以及当前版本的 Chrome 和 Firefox。

有几点需要注意:

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

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

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

干杯。

于 2011-08-05T16:43:44.690 回答
0

worked like a dream when I did this:

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

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

that way only ie7 looks at it.

于 2012-01-12T19:40:11.380 回答