$未在iFrame中定义

时间:2011-05-13 03:25:37

标签: jquery iframe

我有一个包含iframe的页面。我的iframe页面是iframe.php,我的主页面是main.php,当我直接加载iframe.php我的jquery代码执行正常,但是当我加载main.php(其中包含iframe.php作为iframe)时,我收到错误“ $未定义“。

这可能是因为main.php和iframe.php都使用

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>

如果是这样,我如何在iframe页面中使用jquery而不包括这一行?

4 个答案:

答案 0 :(得分:15)

我明白了。在我使用的iFrame中

var $ = parent.$;

以及给任何jquery调用上下文的文档。即

$("#element", document).doStuff();

这很奇怪,因为我拥有它的原始方式(两个页面都包含jquery)在Safari for Mac中运行良好但在Firefox中它给了我错误

  

错误:c.defaultView.getComputedStyle(h,null)为null源文件:http://code.jquery.com/jquery-latest.pack.js行:16

答案 1 :(得分:3)

我正在网页中加载iframe,我可以使用

找到$ object
var $ = parent.$;

但是这并没有对iFrame的元素进行选择。找到下面的代码来在iFrame主体上执行选择器

if (typeof(jQuery) == "undefined") {
    var iframeBody = document.getElementsByTagName("body")[0];
    var jQuery = function (selector) { return parent.jQuery(selector, iframeBody); };
    var $ = jQuery;
}

不知何故,文档对象也是undefined

上述代码的来源:https://gist.github.com/843229

希望它有所帮助。

答案 2 :(得分:2)

坏消息 - 你不能使用Jquery,除非它在文档中。所以,无论如何你都要加载它。

在两个文档中包含jquery调用实际上没有任何害处。我有几个客户iFrame我公司的应用程序的一部分用于营销自动化(包括它)和Jquery包含在他们的父文档中,它工作得很好,没有冲突。从负载的角度来看,假设您设置正确,由于缓存,命中率可以忽略不计。所以,包括在内。

iFrame上的经验法则...将它们视为页面内的单独页面。是的,在某些情况下,事情会继续存在,但文档原始模型会阻止像CSS这样的东西在父母和孩子之间穿越。

答案 3 :(得分:0)

升级到更新的版本f.e. https://code.jquery.com/jquery-2.1.3.min.js