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

时间:2015-02-03 08:20:44

标签: javascript internet-explorer

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

现在我必须通过按ctrl +单击(或中键单击)在后台选项卡中打开链接,但对于IE(9,10,11),它总是变得集中。同样在chrome中工作正常。

以下是可以测试的链接:

<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时)?

P.S。我知道在href属性中提供真实的url会更好,但不幸的是,由于特定于应用程序,我没有这样的选择。

谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

每次加载页面时,或每次请求页面(单页应用程序)时,您都可以运行一段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();

jsfiddle