14

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

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

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

请注意,这不是像往常一样从父/iframe 访问 iframe/父内容。

4

3 回答 3

26

在 iframe 中试试这个:

if (typeof(jQuery) == "undefined") {
    var iframeBody = document.getElementsByTagName("body")[0];
    var jQuery = function (selector) { return parent.jQuery(selector, iframeBody); };
    var $ = jQuery;
}
于 2012-06-08T13:51:04.107 回答
8

这是基于 Moin 的回答的更好的解决方案:

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

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

于 2016-06-03T03:31:25.810 回答
1

您需要在iframe.

编辑:好的,如果框架不在同一个域上,那么您不必重新加载 jQuery。请参阅从 iframe 访问 jQuery 库

于 2012-06-08T13:47:04.777 回答