ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 覆盖window.open()

2019-10-02 08:37:30  阅读:699  来源: 互联网

标签:javascript window-open overriding


我试图覆盖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);
}

解决方法:

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

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

标签:javascript,window-open,overriding
来源: https://codeday.me/bug/20191002/1841940.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有