首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖window.open()

覆盖window.open()
EN

Stack Overflow用户
提问于 2013-01-17 10:04:20
回答 1查看 4K关注 0票数 2

我试图覆盖window.open(),所以我试图找到一种在没有window.open()的新窗口中打开链接的方法。

详细地说,我遇到了这样的情况:我有一个Silverlight Web部件,它使用HTMLWindow.Navigate()在新窗口中打开超链接,所以我不能使用<a>,因为我对Web部件完全没有控制。唯一的方法是重写window.open()

例如,当我想打开顶部窗口中的链接时,我会像这样覆盖window.open()

代码语言:javascript
复制
window.open = function (open) {
    return function (url, name, features) {
            window.top.location = url;    
            return false;
       };
    }(window.open);

在新窗口中是否有类似的打开链接的方法?非常感谢!

PS:我不能在这里使用锚,因为我正在重写window.open()

我最终为这个问题做了什么:

首先,我复制了一份window.open()

代码语言:javascript
复制
var _open = window.open;

然后重写window.open()函数。假设"target“是一个接收查询字符串的变量,例如。注意,默认行为是在当前窗口中打开链接。

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-17 10:08:03

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14376522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档