【发布时间】:2014-07-16 18:51:02
【问题描述】:
我正在尝试开发一个在 iframe 中利用 jQuery 的交互式小部件,但依赖于父文档中已经存在的 jQuery 对象,而不是为其自己的 jQuery 实例发出额外的服务器请求。这很重要,因为小部件将在页面上多次加载到父文档中 - 因此不需要每次出现在页面上时都需要 http 请求。相反,我想传递父对象的 jQuery 对象实例(我确信它会在父文档中可用)以在 iframe 中使用。
了解这是一个“友好”的 iframe(即允许与父文档公开通信),我认为它很简单:
window.jQuery = window.parent.jQuery;
虽然这似乎提供了可在 iframe 中使用的 jQuery 命名空间(并且记录此命名空间会显示预期的 jQuery 函数字符串),但它似乎无法引用 iframe 中的元素。例如:
window.jQuery = window.parent.jQuery;
console.log(jQuery); // logs: function (e,t){return new w.fn.init(e,t,r)}
console.log(jQuery('#elem-in-iframe')); // logs: []
因此,从父文档传递到 iframe 的 jQuery 对象似乎仍然受到父文档范围的限制。
最终,我不得不满足于在页面上加载的每个 iframe 中创建一个独立的 jQuery 实例 - 所以不是在初始页面加载时加载 jQuery 库 once,而是在初始页面加载以及每次将小部件注入父文档时。虽然这不会阻止父窗口加载,但由于 iframe 是独立加载的,因此这不是预期的结果。我想探索如何在 iframe 中从父级继承和使用 jQuery。
【问题讨论】:
-
先检查页面右侧的“相关”问题。
-
我在这里或谷歌上没有找到任何回答我问题的线程。 Casey提到的相关文章是指从父级访问iframe内容。我担心的是从 iframe 访问 jQuery object(在父文档中实例化),而不必在该 iframe 中发出服务器请求。我知道这听起来像是一个在以前在这里和其他地方被问过和回答过很多次的问题,但我向你保证,我浏览了几个相关的线程和谷歌搜索,但没有发现任何相关的
-
@G.Mendes 啊关键字选择的影响; “pass”变成“access”,“object”变成“library”,你会得到一个全新的结果列表。不幸的是,您链接到的帖子提到了我的原始(无效)解决方案作为其最高投票答案。这种方法对我不起作用
标签: javascript jquery iframe