我目前正在编写一个小的Chrome扩展程序,一旦点击了带有href
属性的链接,它就会触发一个动作。此操作执行以下操作:
首先获取href
的数据。然后它检查href是否通向特定域。之后,拆分URL并以如下格式插入HTTP Auth的凭据:
这非常有效!但这是我的问题/问题:
我可以使用
在新标签中打开新生成的链接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;
}
});
代码只是一个简单的例子。没有硬编码凭据。
有没有办法实现这个目标?我的猜测是确定用户是正常打开链接还是在新选项卡中打开链接,阻止默认行为,然后触发欲望事件(新选项卡或同一窗口),但我真的不知道如何做到这一点。