我正在尝试覆盖window.open()
,所以我试图在没有window.open()
的情况下找到在新窗口中打开链接的方法。
详细地说,我遇到这样的情况:我有一个Silverlight Web部件使用HTMLWindow.Navigate()
在新窗口中打开超链接,所以我不能使用<a>
因为我有完全无法控制Web部分。唯一的方法是覆盖window.open()
。
例如,当我想在顶部窗口中打开链接时,我会覆盖window.open()
,如下所示:
window.open = function (open) {
return function (url, name, features) {
window.top.location = url;
return false;
};
}(window.open);
在新窗口中是否有类似的方法来打开链接?非常感谢你!
PS:我不能在这里使用锚点,因为我正在覆盖window.open()
我最后为这个问题做了什么:
首先,我制作了window.open()
var _open = window.open;
然后我覆盖window.open()
函数。例如,假设“target”是接收查询字符串的变量。请注意,默认行为是在当前窗口中打开链接。
if (target == "top")
{
window.open = function (open) {
return function (url, name, features) {
window.top.location = url;
return false;
};
}(window.open);
}
else if (target == "blank")
{
window.open = function (open) {
return function (url, name, features) {
return open_(url, '_blank', features);
};
}(window.open);
}
答案 0 :(得分:1)
仅使用javascript,您无法使用window.open()
打开新窗口。此外,您不会影响在新浏览器中打开窗口的方式。这取决于浏览器设置是否会打开新选项卡或新窗口。
您可以通过在<a
元素上定义href="..."></a>
target="_blank"
a
来声明您想要一个新窗口,但随后是用户必须点击它。否则,如果您使用javascript触发单击,则会遇到浏览器的弹出窗口阻止程序。