【问题标题】:Javascript - Open Link in New Tab (SAME WINDOW)Javascript - 在新选项卡中打开链接(相同窗口)
【发布时间】:2013-11-11 22:07:54
【问题描述】:

我意识到对于这个主题已经有几个关于 SO 的问题,但它们似乎都已经很老了....只是想得到一个最新的答案:

仍然是打开新标签页的标准方式(在同一浏览器窗口中):

window.open('url', '_blank');
window.focus();

???

另外,我读到它取决于用户浏览器的配置(新页面是在新标签页还是新窗口中打开,以及新标签页/窗口是否获得焦点)... .我希望焦点保留在原始选项卡上,但我更关心它在同一个浏览器窗口中打开一个选项卡(保持焦点只是一个奖励)。

那么有没有办法在新浏览器中读取/获取此设置? (chrome, ff, ie) 如果用户将其设置为在新窗口中打开,可能会通知用户更改其设置?

【问题讨论】:

    标签: javascript html google-chrome firefox browser


    【解决方案1】:

    我在

    方面取得了巨大的成功
    <a target='_blank' > 
    

    【讨论】:

    • 引用的 jQueryUI 链接是关于在浏览器选项卡内向 Web 应用程序添加选项卡的;不是要添加浏览器选项卡!
    • 你知道吗?你说得对。回想起来,我不知道我为什么要与它联系起来。
    【解决方案2】:

    最好使用target="_blank"。

    例如。在 Chrome 中,带有target="_blank" 的锚点会打开一个新标签,但是,window.open 会打开一个全新的窗口。

    我尝试了一些实验来将window.open 替换为target="_blank"。

    被弹出窗口拦截器阻止

    // create an anchor, add to body, trigger click
    var a = document.createElement('a');
    a.setAttribute('href', 'http://google.com');
    a.setAttribute('target', '_blank');
    document.body.appendChild(a);
    a.click();
    
    // hijack first anchor, change href, trigger click
    var a = document.getElementsByTagName('a')[0];
    a.setAttribute('href', 'http://google.com');
    a.setAttribute('target', '_blank');
    a.click();
    
    // hijack first anchor that has target=_blank, change href, trigger click
    var a = $('a[target="_blank"]')[0];
    a.setAttribute('href', 'http://google.com');
    a.click();
    

    弹出窗口拦截器允许

    // hijack first anchor that has target=_blank, change href, next document click triggers it
    var a = $('a[target="_blank"]')[0];
    a.setAttribute('href', 'http://google.com');
    $(document).click(function(){
        $('a[target="_blank"]')[0].click();
    });
    
    // create an anchor, add to body, next document click triggers it
    var a = document.createElement('a');
    a.setAttribute('href', 'http://google.com');
    a.setAttribute('target', '_blank');
    document.body.appendChild(a);
    $(document).click(function(){
        a.click();
    });
    

    似乎只要弹出窗口是由用户交互触发的,弹出窗口拦截器就允许它。

    Mozilla 在window.open 上的文档:

    https://developer.mozilla.org/en-US/docs/Web/API/window.open

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-18
      • 2010-09-12
      • 2012-03-19
      • 1970-01-01
      • 2013-03-22
      • 2012-01-22
      • 2022-06-13
      相关资源
      最近更新 更多