当锚点的属性“href”包含javascript时,在后台打开链接

Open link in background when anchor's attribute "href" contains javascript

本文关键字:后台 链接 javascript 包含 属性 href      更新时间:2023-09-26

我支持带有一些遗留部分的Web企业级应用程序,其中某些窗口是通过使用anchor的href属性中的window.open命令打开的。(例如 ...function MyFunction(url, id) { window.open(url, id) ...)

现在我必须通过按 ctrl + 单击(或中键单击)在后台选项卡中打开链接,但对于 IE(9、10、11),它总是变得专注。在铬中同样有效。

这是一个可以测试它的链接:

<a href="javascript:OpenNewTab('http://google.com', 1)"> Open google tab </a>
OpenNewTab = function(url, id){
    window.open(url, id);
}

http://jsfiddle.net/hj3gud9j/

有没有办法在后台打开这些新选项卡(仅在按下 ctrl 时)?

附言我知道最好在 href 属性中提供真实的 url,但不幸的是,由于特定于应用程序,我没有这样的选项。

感谢您在爱达的帮助!

您可以在每次加载页面或每次请求页面(单页应用程序)时运行一段 JavaScript。

这段代码功能不全,但我希望你能抓住我的漂移:)

function createListener(url){
    return function(event){
        if(event.ctrlKey){
            console.log(url); //Here you can do anything you want with the url
        }
        event.preventDefault();
    }
}
function runOnce(){
    var allAnchors = document.getElementsByTagName('a');
    for(var i = allAnchors.length; i--;){
        var a = allAnchors[i],
            href = a.getAttribute('href'),
            split = href.split('('),
            url = split[1].split(',')[0];
        a.href = '#';
        a.addEventListener('click', createListener(url));
    }
}
runOnce();

斯菲德尔