我在Chrome上做了一些实验,但我不确定所以我需要确认:
我是否认为iframe和框架具有单独的JavaScript上下文,这使得它们无法在这些框架/ iframe之间共享变量?
为了简化,我们假设客户端将始终是Chrome的相同版本(这是我的情况)
在帧之间共享值并非"不可能",但你必须要小心.在Internet Explorer中,以下方案将导致错误:
当引用已失效页面中的对象时,Internet Explorer不喜欢它.
好吧,它们只是具有不同的全局对象和全局范围。但是,如果它们在同一个域中,则可以彼此运行代码。但是,如果要执行此操作(在父窗口中):
document.getElementById( "myiframe" ).contentWindow.window.globalArray = [];
Run Code Online (Sandbox Code Playgroud)
这会globalArray在iframe的全局范围内创建一个全局变量。
然后在iframe中
console.log( globalArray instanceof Array );
将返回,false因为Array引用了iframe的Array构造函数。你必须要做
console.log( globalArray instanceof top.Array );
Run Code Online (Sandbox Code Playgroud)
其中,top是指容器窗口的全局对象。
jsfiddle:http : //jsfiddle.net/EFbtN/