当包含<script>标记时,jQuery.html()在IE11中打破onclick处理程序

时间:2015-06-15 21:04:59

标签: javascript jquery html internet-explorer onclick

如何使用onclick处理程序和&lt; script&gt; 标记中包含的javascript代码在IE中嵌入html。

&#xA;&#xA;

如果我使用 $('#id')。html(data)在onclick处理程序中嵌入一些html,通常这样可行,并且onclick处理程序会按预期触发。

&#xA;&#xA ;

但是,在IE11中,如果我还在嵌入的数据中包含&lt; script&gt; 标记,则脚本标记中的代码会正确执行,但onclick处理程序不再触发。

&#xA;&#xA;

实际上,我正在嵌入的代码是从ajax调用返回的,但这是一个演示问题的简化示例:

&#xA; &#xA;
 &lt;!DOCTYPE html&gt;&#xA;&lt; html&gt;&#xA; &LT; HEAD&GT;&#XA; &lt; meta http-equiv =“X-UA-Compatible”content =“IE = EDGE”/&gt;&#xA; &lt; script type =“text / javascript”src =“jquery.js”&gt;&lt; / script&gt;&#xA; &lt; script type =“text / javascript”charset =“utf-8”&gt;&#xA; //&LT;![CDATA [&#XA; $(document).ready(function(){&#xA; var data ='&lt; input type =“checkbox”onclick =“console.log(\'clicked \'); return false;”/&gt;'+ &#xA;'&lt; scr'+'ipt&gt; console.log(\'loaded \')&lt; / sc'+'ript&gt;';&#xA; $('#container')。html(data) ;&#xA;});&#xA; //]] GT;&#XA; &LT; /脚本&GT;&#XA; &LT; /头&GT;&#XA; &LT;身体GT;&#XA; &lt; div id =“container”&gt;&lt; / div&gt;&#xA; &lt; / body&gt;&#xA;&lt; / html&gt;&#xA;  
&#xA;&#xA;

加载页面后,您会看到已加载写入控制台。但是当你点击复选框时,没有记录任何内容。

&#xA;&#xA;

如果你从数据中删除 script 标签,那么onclick处理程序工作正常。

&#xA;&#xA;

这适用于Firefox和Chrome中的 script 标记,并且我记得在IE9中可以使用。&#xA; Is这是IE11中的一个错误,jQuery中的一个错误?任何解决方法?

&#xA;&#xA;

我正在使用jQuery v1.11.3

&#xA;

1 个答案:

答案 0 :(得分:1)

问题的原因似乎是“IE增强安全配置”。据我所知,这是一个仅存在于MS Windows服务器版本中的设置。

启用此设置时,上述问题仍然存在。关闭设置会导致问题消失。

您无法在“IE选项”对话框中将其关闭。您必须使用“服务器管理器”应用程序。