在新标签

时间:2018-01-09 09:46:34

标签: javascript jquery google-chrome google-chrome-extension

我目前正在编写一个小的Chrome扩展程序,一旦点击了带有href属性的链接,它就会触发一个动作。此操作执行以下操作:

首先获取href的数据。然后它检查href是否通向特定域。之后,拆分URL并以如下格式插入HTTP Auth的凭据:

  

http://username:password@domain.tld

这非常有效!但这是我的问题/问题:

我可以使用

在新标签中打开新生成的链接
window.open(newURL);

或使用

在同一标签中
window.location = newURL;

两种方式都按预期工作。但是,如果我使用第二个,在我的情况下更合适的方法,当用户在新选项卡中打开链接时,Auth进程工作。它仅在正常单击链接时有效。通常我的意思是通过简单的左键单击打开链接,在同一个选项卡中打开它。但是,如果用户执行Rightclick - > Open in new tab或类似的,Auth过程不起作用。有没有人知道如何解决这个问题?

我的完整代码如下:

$("a[href]").on("click", function(e){
    let uri  = $(this).attr("href");
    let host = getDomain(uri); //Function for getting the host only

    if (host.endsWith("example.com")){
        e.preventDefault();

        //I am aware this only works for HTTP
        let newuri = uri.slice(0, 7) + "user:pass@" + uri.slice(7);

        //window.open(newuri);
        window.location = newuri;
    }
});

代码只是一个简单的例子。没有硬编码凭据。

有没有办法实现这个目标?我的猜测是确定用户是正常打开链接还是在新选项卡中打开链接,阻止默认行为,然后触发欲望事件(新选项卡或同一窗口),但我真的不知道如何做到这一点。

0 个答案:

没有答案