当它仅包含在父窗口中时,是否可以从iframe访问jQuery lib?我有一个父窗口加载(有时数百)iframe。在每个iframe中,我想执行一些jQuery函数。如果我使用:
在每个iframe中定义lib,我只能使用它<script src="/jquery.min.js" type="text/javascript"></script>
但是,我希望,为了加快加载速度,我只在父窗口中包含上面的脚本标记,然后从每个子/ iframe访问父文件库以执行影响iframe的函数。
感谢您的回复。这是我在子框架中的内容:
<script>
var $ = parent.jQuery;
$(this, document).ready(function(){
var step = 0.2;
$('body', document).css('MozTransform','scale(0.2)');
});
</script>
而我所期待的是,一旦孩子的医生“准备好”,它就会缩减到20%。除了不工作。是否可能,或者我应该尝试将子代码添加到父文档并为每个框架分配ID,然后循环遍历它们。
使用 $(document).ready(function(){ $( '主体')。CSS( 'MozTransform', '比例('
导致父窗口缩小。我想缩小iframe。
答案 0 :(得分:1)
假设iframe
与父文档位于同一个域中,您可以轻松获得对父窗口jQuery的引用:
var $ = parent.jQuery;
或者,如果iframe
嵌套了多个级别的深度:
var $ = top.jQuery;
但是,默认情况下,jQuery只会查询文档所在的位置。如果您需要查询给定的iframe
的DOM,您有两个选择:
通过document
,在这种情况下指向给定的iframe
的{{1}},context:
window.document
或者,存储一个包含$('#elementInsideIframe', document).doSomething();
文档和iframe
后代的jQuery对象。
.find()
尽管其他人说,缓存对你的用例来说并不“足够好”。 jQuery有很多初始化开销,而且你不想包含数百次。
根据OP更新:
只需在框架内使用var $dom = $(document);
$dom.find('#elementInsideIframe').doSomething();
即可。在(i)帧上下文中,$(document).ready()
指向给定帧的document
。
此外,如果您使用的是jQuery&gt; = 1.8,则不需要使用供应商前缀 - 如果不支持标准的jQuery,jQuery将使用相应的vendor-prefixed属性。
答案 1 :(得分:0)
使用父窗口或顶部窗口的html代码进行抖动的开销将比加载jquery的额外行脚本花费更多。
在每个框架中单独加载,可能使用jquery的在线版本,这将增加在加入库之前加载库的客户端的通道。
在示例中
<script src="http://code.jquery.com/jquery-latest.min.js"
type="text/javascript"></script>