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 中不工作 其他浏览器正常工作
Fancybox 2,带表单的 iframe,在 IE7 中不起作用
“iframe.contentDocument”在 IE8 和 FF(3.5 及更低版本)中不起作用还有其他解决此问题的步骤吗?