[英]Execute a function within the context of a different window?
假设顶部窗口中有一个函数。 例如:
function z() { alert(window.name); }
我们还要说这个文档中有一个iframe(同源)。
顶部窗口中的函数是否可以在另一个窗口的上下文中执行此函数,以便显示iframe的名称而不是顶部窗口?
换句话说,全局对象如何绑定到一个函数并且可以更改?
天真的尝试不起作用: https : //jsfiddle.net/wos2o3gx/ (显示两个调用的顶部)。
全局对象如何绑定到函数并且可以更改?
函数的全局上下文在创建函数时确定,即使您将该函数作为另一个window
上下文的属性也不会更改。 有动态的替代方法,比如用this
替换window
,但由于this
并不总是设置为全局对象(例如在严格模式下),我建议将window
变量传递给你的函数:
function z (window) {
window = window || self
console.log(window.name)
}
window.name = 'w top'
z()
var iframe = document.getElementById('iframe')
iframe.contentWindow.name = 'w iframe'
z(iframe.contentWindow)
<iframe id="iframe" src="about:blank" name="w iframe">
</iframe>
您可以在示例中使用this
代替window
,如下所示:
function z() {
alert(this.name);
}
window.name = 'w top';
z();
var iframe = document.getElementById('iframe');
frame.contentWindow.name = 'w iframe';
frame.contentWindow.z = z;
frame.contentWindow.z();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.