gpt4 book ai didi

javascript - 如何覆盖 window.open 功能?

转载 作者:技术小花猫 更新时间:2023-10-29 12:12:49 25 4
gpt4 key购买 nike

假设我有 window.open(没有名称参数),分散在我的项目中,我想更改实现,以便在未指定名称的任何地方指定一个默认名称。

我想做的是将我自己的方法挂接到 window.open 上,这样每当 window.open 运行时,它都会在内部调用我自己的方法,然后调用 window.open(使用 name 参数)。

这可以通过 Javascript 实现吗?这是否会存在任何循环依赖问题,即 window.open 调用我的自定义函数,而后者又再次调用 window.open 函数?

附言简单来说,我想做的是覆盖 window.open 功能。

最佳答案

为避免循环调用,您需要将原始的 window.open 函数隐藏在一个变量中。

一个不错的方法(不会污染全局命名空间)是使用闭包。将原始 window.open 函数作为参数传递给匿名函数(下面称为 open)。这个匿名函数是你的钩子(Hook)函数的工厂。您的钩子(Hook)函数通过 open 参数永久绑定(bind)到原始 window.open 函数:

window.open = function (open) {
return function (url, name, features) {
// set name if missing here
name = name || "default_window_name";
return open.call(window, url, name, features);
};
}(window.open);

关于javascript - 如何覆盖 window.open 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9172505/

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