javascript - 如果我的 JavaScript 代码在 <iframe> 中,我是否需要命名空间?

标签 javascript html iframe namespaces

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

我进行了一些谷歌搜索并找到了这个页面,但我无法真正理解他在这里所做的事情,或者它是否适用于我正在尝试确定/完成的事情。

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

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

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

如果使用 <iframe> 不能自动保护我,谁能推荐一种方法来隔离 <iframe> 中运行的任何 <script> ?

提前感谢您的指导。

最佳答案

因为各自的命名空间是分开的,所以应该没问题。考虑以下内容

主页 JavaScript:

Foo = {};
Foo.bar = function(){ alert('hi!');}

现在是 iframe JavaScript:

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!'

关于javascript - 如果我的 JavaScript 代码在 &lt;iframe&gt; 中,我是否需要命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653231/

相关文章:

javascript - IE中动态iFrame的正确访问

javascript - Firefox 中的 HTML5 拖放文件夹检测。有可能吗?

javascript - AngularJS如何过滤数组中的元素

javascript - 所见即所得 免费用于商业用途

javascript - 尝试检测第二次单击复选框时出现停止传播问题

javascript - onChanged 事件未从 iframe 中的输入字段触发

javascript - FileReader 和 $scope.$watch 的 AngularJS 问题?

javascript - 输入类型图像上的 Onclick 事件提交表单

javascript - 点击时管理 <td> 类标签 - javascript

html - 外部 div 上没有指针事件,但内部 iframe 上没有