如果它位于<iframe>中,我是否需要命名我的JavaScript代码?

Bun*_*gle 4 html javascript iframe namespaces

如果我编写一些在<iframe>中运行的JavaScript(使用JavaScript动态创建并添加到DOM中,如果这很重要),它是否与其父页面的全局命名空间隔离,或者仍然存在冲突?

我做了一些谷歌搜索并遇到了这个页面,但我无法理解他在这里做了什么,或者它是否适用于我正在尝试确定/完成的内容.

http://dean.edwards.name/weblog/2006/11/sandbox/

我正在创建一个将存在于未知主机页面上的小部件; 它是一个<script>,它在页面上插入一个<iframe>,然后创建一个文档,加载一些外部脚本并将该文档插入到动态创建的<iframe>中.

基本上,我只是想避免与主页上的任何全局变量冲突; 我不希望我在<iframe>中编写或加载的任何JavaScripts与主机页面上的任何内容冲突.

如果使用<iframe>不会自动保护我,那么有人可以推荐一种方法来隔离<iframe>中运行的任何<script>吗?

提前感谢任何指导.

Gor*_*ker 9

因为每个命名空间是分开的,所以应该没问题.考虑以下

主页JavaScript:

Foo = {};
Foo.bar = function(){ alert('hi!');}
Run Code Online (Sandbox Code Playgroud)

现在iframe JavaScript:

Foo = {};
Foo.bar = function(){ alert('yo!');}
Run Code Online (Sandbox Code Playgroud)

要让iframe与父母交谈,就必须做这样的事情

window.parent.Foo.bar(); //Alerts 'hi!'
Foo.bar(); //Alerts 'yo!'
Run Code Online (Sandbox Code Playgroud)

要让主页查看框架,必须执行以下操作:

window.frames['nameOfFrame'].contentWindow.Foo.bar(); //Alerts 'yo!'
Foo.bar(); //Alerts 'hi!'
Run Code Online (Sandbox Code Playgroud)