2

我正在尝试覆盖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);
}
4

1 回答 1

1

仅从 javascript 中,您无法在使用window.open(). 此外,您对在新浏览器中打开窗口的方式没有影响。这取决于浏览器设置是否打开新选项卡或新窗口。

您可以通过在-element 上定义来声明您想要一个新窗口,但随后用户必须单击它。否则,如果您使用 javascript 触发点击,您将遇到浏览器的弹出窗口阻止程序。<atarget="_blank"href="..."></a>a

于 2013-01-17T10:08:03.130 回答