Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Iframe中重定向jQuery以修改父文档_Javascript_Jquery_Iframe - Fatal编程技术网

Javascript 在Iframe中重定向jQuery以修改父文档

Javascript 在Iframe中重定向jQuery以修改父文档,javascript,jquery,iframe,Javascript,Jquery,Iframe,我有一个我正在试验的用例——将许多不同的JS库沙箱化到隐藏的iFrame中。在该站点中,可能有许多来自同一域的小部件,它们可能需要不同版本的js库。为了防止全球冲突,我认为将它们所需的所有库放在iFrame中会很有趣。因此,在一个iframe中,我可能有jQuery 1.7.1,但在其他iframe中,可能有更老的版本。我想做的是让在每个iframe上运行的代码能够对主窗口进行更改。我可以通过调整jQuery源代码中的“document”变量,使其指向“var document=top.docu

我有一个我正在试验的用例——将许多不同的JS库沙箱化到隐藏的iFrame中。在该站点中,可能有许多来自同一域的小部件,它们可能需要不同版本的js库。为了防止全球冲突,我认为将它们所需的所有库放在iFrame中会很有趣。因此,在一个iframe中,我可能有jQuery 1.7.1,但在其他iframe中,可能有更老的版本。我想做的是让在每个iframe上运行的代码能够对主窗口进行更改。我可以通过调整jQuery源代码中的“document”变量,使其指向“var document=top.document”来实现这一点

使用这种方法,我能够在iframe中执行$(“body”).append('test”),并让它修改父文档


有人能提出一个更好的方法来做这样的事情吗?还是更好的沙箱方法?

如果您不想编辑jQuery,我相信这是可行的:

$(document, parent.window.document).contents().find('body').append('test');

这样,您也可以从
iframe
中使用jQuery库,但是如果您隐藏它们,您的解决方案可能更适合您的目的。

是的,我也这么认为。我不想修改jQuery,但我需要一个突出的解决方案。看起来jQuery是从window.document获取文档的,所以包装另一个设置文档的自动执行包装器将无法工作。