我有一个文件,我们称之为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 /父内容。
答案 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。见Access jQuery library from iframe