iframe 中的 jQuery 在 IE 中不起作用

Posted

技术标签:

【中文标题】iframe 中的 jQuery 在 IE 中不起作用【英文标题】:jQuery in iframe not working in IE 【发布时间】:2013-06-27 14:28:09 【问题描述】:

我有一个包含 jQuery 的 iframe 内容,并且 iframe 中内容的 jQuery 部分在 IE 中不起作用(未使用 jQuery 的部分工作正常,在 Chrome 和 Firefox 中一切正常)。

代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>iframe content</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <h1>This heading is showing up just fine.</h1>
    <div id="jQuery-generated-content">
           <!-- content dynamically generated by jQuery plugin This part is not showing in iframe in IE -->
    </div>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js">   </script>
    <script src="pathTojQueryPlugin.js"></script>
    <script type="text/javascript">
        jQuery.codeToInitiatePlugin
    </script>

</body>
</html>

我尝试在头部插入 jQuery 代码,就在 body 标记之后,包含相对路径和绝对路径,但没有成功。如果有人知道任何解决方法或导致 IE 无法读取 jQuery 的原因,我将不胜感激。

提前致谢!

【问题讨论】:

如果您正常加载页面而不是在 iframe 中加载,它是否有效? 这是 iframe 的代码吗? 是的,如果我正常加载页面就可以了,而不是iframe的内容。 【参考方案1】:

前段时间我也遇到了同样的问题。问题是因为 IE 无法从 iframe 中访问 jquery 库,因此无法读取 jquery 代码。唯一的解决方法是将 jquery 代码转换为 javascript。

更新:

使用不同版本的jQuery也可以解决问题。或者也可以使用不同的 jQuery 库。

【讨论】:

包含 jquery 库也无济于事...我已经尝试过了。你也可以试试 感谢您的评论,席德。但在这种特殊情况下,我需要使用 jQuery,因为我需要在 iframe 中使用的 jQuery 插件,因为它具有我需要的确切效果/功能。而且我很难在javascript中编写类似/重新创建功能/效果的东西...... 您可以发布您的 jquery 并要求该代码的替代品。也许有人可以帮助你。 您可以做的另一件事是,如果您希望代码保留在 jQuery 中,您可以使用 php 包含函数而不是 iframe。如果这样做,请确保父文档中有 jQuery 库 感谢您的建议。我设法通过以下方式解决了这个问题:1)包括来自同一服务器(iframe 页面所在的那个)的 jQuery 库,而不是来自 Google 服务器。 2) 更改了 jQuery 版本 1.8.3。【参考方案2】:

来自另一个 SO 问题:

这是一个合法的 jQuery 1.10.1 错误:http://bugs.jquery.com/ticket/13980。

Source

就我而言,使用...

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

..解决了这个问题。它也恰好与父页面的版本相同(感谢 Avigon)。

【讨论】:

【参考方案3】:

您可能已经通过其他方式解决了这个问题,但以防万一其他人也发现了这篇文章。

这里有一个小“技巧”​​,在某些情况下可能会有所帮助。 在使用 jQuery 之前在 iframe 中添加这个:

if (window.jQuery)  
   jQuery = window.jQuery; 
   $ = window.jQuery; 

但是包含 iframe 的页面必须有 jQuery。 (最好是同一个版本)

【讨论】:

【参考方案4】:

正如 hotate17 在评论中所说,对此的实际答案是他/她正在从 CDN 加载 jQuery 资产,在本例中是 Google 的 CDN。从同一服务器加载 jQuery 资产,因此与 iFrame 源相同的 URL 解决了他和我的问题,感谢 hotate17!

http://www.sandiegosoftware.net/blog/script5-access-is-denied-error-in-internet-explorer-loading-jquery/

【讨论】:

以上是关于iframe 中的 jQuery 在 IE 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jquery 在 iframe 内的 IE 中不工作 其他浏览器正常工作

jQuery 的选择器在 iframe 中不起作用

Fancybox 2,带表单的 iframe,在 IE7 中不起作用

jQuery/iframe 在 Chrome 中不起作用

jQuery html 属性在 IE 中不起作用

“iframe.contentDocument”在 IE8 和 FF(3.5 及更低版本)中不起作用还有其他解决此问题的步骤吗?