如何在iframe中使用父级的jquery?

时间:2012-06-08 13:43:35

标签: javascript jquery iframe

我有一个文件,我们称之为parent-win.html,由域example.com提供服务。该文件中包含jquery。 iframe,我们称之为iframe-win.html,嵌入在此页面中。 iframe-win.html的表单元素的标识为form-elem,值为Hello World!。现在我在iframe内部进行了跟踪。

var jQuery = parent.jQuery;
console.log(jQuery('#form-elem').val());

根据我对JS的有限知识,我应该在控制台上看到Hello World!,但我看到未定义。现在,我的问题是我需要在iframe中再次加载jquery还是我可以利用已在父窗口中加载的jquery对象?

请注意,这不像父/ iframe那样通常访问iframe /父内容。

3 个答案:

答案 0 :(得分:24)

在iframe中尝试此操作:

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

答案 1 :(得分:7)

根据Moin的答案,这是一个更好的解决方案:

if (typeof(jQuery) == "undefined") {
    window.jQuery = function (selector) { return parent.jQuery(selector, document); };
    jQuery = parent.$.extend(jQuery, parent.$);
    window.$ = jQuery;
}

所以我们可以使用$ .get,$ .extends等$等函数。

答案 2 :(得分:1)

您需要在iframe

中加载jQuery

编辑:好的,如果框架不在同一个域上,那么必须重新加载jQuery。见Access jQuery library from iframe