【发布时间】:2012-05-02 02:02:37
【问题描述】:
我在网页中嵌入了一个 iframe,我想在这个框架中注入 jquery。
我尝试了类似的方法:
frame.contentWindow.$ = window.$
虽然这可行,但 iframe 的 $ 仍然在父级范围内运行,而不是其自己的独立副本。
有没有办法在 iframe 中注入一个独立的 jquery 对象而不在框架中注入 <script src="/path/to/jquery.js"></script>?
更新
解决了。 jquery.js 通过在匿名函数中接受 window 对象方便地为范围定义 jQuery:
function(windowObject){ .... define jquery }(window)
所以我所要做的就是给这个函数命名,例如j查询并为父窗口对象调用一次,然后为子窗口对象调用一次。
jQuerify = function(windowObject){ .... define jquery }
jQuerify(window)
jQuerify(iframe.contentWindow)
【问题讨论】:
-
为什么不直接注入脚本标签呢?它将从缓存中加载。您需要它在加载时从头开始运行,以便它在新的上下文中重新初始化。
-
您也可以查看api.jquery.com/jQuery.sub。请注意,
.sub()是自 1.7.0 以来的插件 -
@jfriend00 我为我的 jquery 提供了许多其他库。那个文件超级重。我不希望 iframe 处理所有这些 javascript。
-
@jAndy 子文档说子方法仍然调用原始 jquery 对象。
-
我有消息要告诉你。如果你想要一个新的 jQuery 实例,你必须加载一个新的 jQuery 实例。如果您只想要 jQuery 而不是父框架正在使用的所有其他内容,那么只需将您需要的内容放入 iframe 中。这里没有秘密答案。将您需要的脚本放入 iframe 中。
标签: javascript jquery