【问题标题】:function Window.focus doesn't work in IE (8, 9, 10, 11)函数 Window.focus 在 IE (8, 9, 10, 11) 中不起作用
【发布时间】:2017-02-13 03:01:21
【问题描述】:

这是我的代码,此代码用于打开新标签并专注于它。

  • 如果选项卡还没有打开,我会用指定名称打开它。
  • 如果标签页打开了,我会使用window.focus()来聚焦它;

快速测试:http://jsfiddle.net/u2jd2oLw/1/

Javascript 代码

var tabs = [];
$('#btnOpenTab').on('click', function(){
    openTab('http://google.com.vn', 'GG');
});


function openTab(url, tabNm) {
    try {
        if (tabs[tabNm]) {
            tabs[tabNm].focus();
        } else {
            var mTab = window.open(url, tabNm);
            tabs[tabNm] = mTab;
            tabs[tabNm].focus();
        }
    } catch(e) {
        alert(e.message);
    }
}

HTML 代码

<button id="btnOpenTab">Open Tab</button>

其实我在IE11中查看,出现了“Access is denied

我试图通过取消选中复选框来关闭选项:“打开弹出窗口阻止程序”。

你有什么建议吗?

谢谢!!

【问题讨论】:

    标签: javascript internet-explorer


    【解决方案1】:

    【讨论】:

    • @JackDuong 我没有 Windows 机器,所以我帮不上什么忙,但我遇到的唯一理智的答案是 focus() 工作应该从目标调用窗口本身,在这种情况下,您需要了解如何使用调用 window.focus() 的脚本注入新标签
    【解决方案2】:

    由于安全问题,这将工作一次

    $(function() {
      $('#btnOpenTab').on('click', function(){
        openTab('http://google.com.vn', 'GG');
      });
    });
    
    function openTab(url, tabNm) {
      var mTab = window.open("", tabNm);
      mTab.document.write('<body onload="window.focus(); location.replace(\''+url+'\')">Please wait...</body>');
      mTab.document.close();
    }
    

    它运行两次失败,因为一旦页面加载它就不再是同一个来源。

    我尝试使用 iFrame,但 Google 现在也阻止了它

    【讨论】:

    • 感谢您的回答,但这不是我想要的。 :(
    • 我知道。所以你是 SOL。
    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多