gpt4 book ai didi

javascript - 将所有功能移动到子窗口

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:53:07 24 4
gpt4 key购买 nike

如果我这样做:

var new_win = window.open();

如何才能使所有可以在父窗口中使用的功能现在都可以在子窗口中使用 (new_win)?

不想做:

var fun1 = window.opener.fun1;
var fun2 = window.opener.fun2;
...

最佳答案

请注意,接下来的内容是危险的、肮脏的、困惑的、M$ 级别的黑客攻击。我完全意识到这一点,但它(理论上)做了@Neal 想要的。 (我什至有点害怕发布它,我完全期待投反对票)

var i, w = window.opener;
for (i in w)
{
if (w.hasOwnProperty(i) && !window.hasOwnProperty(i) && typeof w[i] === 'function')
{
window[i] = w[i];
}
}

鉴于范围问题,我决定我们必须使用.bindMDN Entry for Function.bind 处有垫片这对于某些浏览器是必需的。

请注意,在使用 .bind 之前,代码必须检查属性是否为函数。我已将此与 hasOwnProperty 检查一起完成,但如果您希望传递值和函数,您可能希望在它自己的 if 语句中执行此操作。

var i, w = window.opener;
for (i in w)
{
if (w.hasOwnProperty(i) && !window.hasOwnProperty(i) && typeof w[i] === 'function')
{
window[i] = w[i].bind(window);
}
}

关于javascript - 将所有功能移动到子窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7968123/

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