在子框架上使用jquery而不再加载它

时间:2011-05-31 08:56:02

标签: javascript jquery unobtrusive-javascript

是否可以在父iframe页面中加载和使用jquery&在iframe里面加载jquery两次, 意思是在页面中只加载一次jquery并在ifrmae中使用它。

2 个答案:

答案 0 :(得分:1)

您可以为子框架提供父框架中jQuery对象的引用,但是您必须非常小心使用它,因为在不同的地方,jQuery使用{document 1}}加载它的上下文的对象,它(当然)是父的document。在某些地方你可以覆盖它(例如,当通过$()搜索元素时,你可以给出一个搜索第二个参数的上下文),但它可能比它的价值更麻烦。

但重新加载jQuery应该不是问题。它应该来自缓存。当然,可能有一个带有“未修改”响应的额外HTTP GET,尽管通过在提供jQuery文件时使用适当的缓存头,您甚至可以避免这种情况。 (我没有检查托管它的各种CDN的缓存头。)

答案 1 :(得分:1)

当然,只需确保<iframe>没有加载jQuery脚本,即<script src="....">,然后您就可以访问父级中的jQuery实例,如下所示:

var $ = window.top.$; 

请务必使用第二个参数使用正确的上下文:

$('img', document);

如果无法做到这一点,则无法“阻止”下载和执行脚本。