gpt4 book ai didi

javascript - 在不同窗口的上下文中执行函数?

转载 作者:可可西里 更新时间:2023-11-01 01:31:39 24 4
gpt4 key购买 nike

假设顶部窗口中有一个函数。例如:

function z() { alert(window.name); }

假设此文档中有一个 iframe(同源)。

顶部窗口中的函数能否在另一个窗口的上下文中执行此函数,以便它显示 iframe 的名称而不是顶部窗口?

换句话说,全局对象是如何绑定(bind)到函数上的,是否可以更改?

无效的天真尝试:https://jsfiddle.net/wos2o3gx/ (两次调用都显示顶部)。

最佳答案

How is the global object bound to a function and can it be changed?

函数的全局上下文在创建函数时确定,即使您将该函数设为另一个 window 上下文的属性也不会改变。有动态的替代方案,比如用 this 替换 window,但由于 this 并不总是设置为全局对象(例如在严格模式下),我建议将 window 变量传递给您的函数:


演示代码段 ( JSFiddle ):

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>

关于javascript - 在不同窗口的上下文中执行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43027605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com