我正在尝试覆盖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()
函数。例如,假设“目标”是一个接收查询字符串的变量。请注意,默认行为是在当前窗口中打开链接。
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);
}