如果JavaScript代码是';在一个<;iframe>;?
如果我编写了一些在中运行的JavaScript(如果有必要的话,它是用JavaScript动态创建并添加到DOM中的),它是与其父页面的全局名称空间隔离的,还是仍然可能发生冲突 我在谷歌上搜索了一下,看到了这个页面,但我真的搞不懂他在这里做什么,也弄不清楚这是否适用于我试图确定/完成的事情 我正在创建一个小部件,它将生活在未知的主机页面上;它是一个在页面上插入,然后创建一个文档,加载一些外部脚本并将该文档插入动态创建的 基本上,我只是想避免与主机页上的任何全局变量发生冲突;我不希望在中编写或加载的任何Java脚本与主机页上的任何内容冲突 如果使用A不能自动保护我,有谁能推荐一种方法来隔离在中运行的任何s如果JavaScript代码是';在一个<;iframe>;?,javascript,html,iframe,namespaces,Javascript,Html,Iframe,Namespaces,如果我编写了一些在中运行的JavaScript(如果有必要的话,它是用JavaScript动态创建并添加到DOM中的),它是与其父页面的全局名称空间隔离的,还是仍然可能发生冲突 我在谷歌上搜索了一下,看到了这个页面,但我真的搞不懂他在这里做什么,也弄不清楚这是否适用于我试图确定/完成的事情 我正在创建一个小部件,它将生活在未知的主机页面上;它是一个在页面上插入,然后创建一个文档,加载一些外部脚本并将该文档插入动态创建的 基本上,我只是想避免与主机页上的任何全局变量发生冲突;我不希望在中编写或加
提前感谢您的指导。如果我正确理解您的情况,iFrame中的任何内容都应该超出页面其余部分的范围。但是,您可以使用
parent
引用主页代码
var foo
<iframe>
var bar = parent.foo;
</iframe>
var foo
var bar=parent.foo;
我知道这不是iframe的外观。只是想简化一下。通常情况下,iframe和主窗口中的脚本都是相互隔离的 main.html:
<!DOCTYPE html>
<html><head>
</head>
<body>
<script>
function ale(){alert('test');}
</script>
<iframe src="fr.html"></iframe>
</body></html>
<input type="button" onclick="ale();" />
函数ale(){alert('test');}
fr.html:
<!DOCTYPE html>
<html><head>
</head>
<body>
<script>
function ale(){alert('test');}
</script>
<iframe src="fr.html"></iframe>
</body></html>
<input type="button" onclick="ale();" />
请注意,当打开main.html并单击iframe中的按钮时,会出现一个Javascript错误,表示ale();将生成未定义的。这是因为它们是两个独立的文档
但是,您可以使用window.parent
节点从iframe访问父框架的文档对象。e、 g.window.parent.getElementById('mainform')
摘要
不需要在iframe中为代码命名名称空间。因为每个代码的名称空间是分开的,所以应该可以。考虑下面的 主机页JavaScript:
Foo = {};
Foo.bar = function(){ alert('hi!');}
Foo = {};
Foo.bar = function(){ alert('yo!');}
现在,iframe JavaScript:
Foo = {};
Foo.bar = function(){ alert('hi!');}
Foo = {};
Foo.bar = function(){ alert('yo!');}
为了让iframe与父对象对话,它必须执行类似的操作
window.parent.Foo.bar(); //Alerts 'hi!'
Foo.bar(); //Alerts 'yo!'
要使主机页看到框架,必须执行以下操作:
window.frames['nameOfFrame'].contentWindow.Foo.bar(); //Alerts 'yo!'
Foo.bar(); //Alerts 'hi!'
很好的解释!非常感谢,这回答了我的问题。谢谢,莫里斯!这正是我所怀疑的,但我想确定我没有遗漏或误解什么。