Internert Explorer window.open首次点击后无法聚焦

时间:2017-01-11 09:35:46

标签: javascript html5 internet-explorer browser frontend

在Internet Explorer中,当我第二次单击该链接时,窗口已经打开,但它没有聚焦。它在Chrome和Firefox中运行良好。 使用以下代码:

function open_page(url, name, features) {
  var win = open(url, (name == null ? 'page' : name), (features == null ? 'menubar=1,toolbar=1,scrollbars=1,width=1024,height=768,resizable=1' : features));
  if (win == null) {
    alert('Can not open');
  } else {
    document.isUnloading = false;
    win.focus();
  }
}
<input type="image" id="pdf" name="pdf" style="padding: 2px; background-color: white; border: 1px dotted white;" title="PDF" src="/images/buttons/pdf.png" alt="PDF" onclick="open_page('http://www.w3schools.com'); return false;" onmouseover="document.getElementById('pdf').style.border='1px solid #a0a0ff'; document.getElementById('pdf').style.backgroundColor='#f0f0ff';"
onmouseout="document.getElementById('pdf').style.border='1px dotted white'; document.getElementById('pdf').style.backgroundColor='white';">

2 个答案:

答案 0 :(得分:0)

示例1 这个应该在同一个来源上工作,但可能不是

_clickLectre = <any>{};

示例2

这是一个更好的选择,添加

var win;
function open_page(url, name, features) {
  name = name  || 'page';
  if (win && !win.closed) window.open(url,name).focus();
  else {
    win = open(url,name, (features == null ? 'menubar,toolbar,scrollbars,width=1024,height=768,resizable' : features));
    if (win == null) {
alert('Can not open.');
    } else {
      document.isUnloading = false;
      win.focus();
    }
  }
}

指向您打开的页面,假设没有其他onload,如果已经有,请将<script>window.onload=function() { window.focus() }</script> 添加到该页面

如果您要打开的页面是PDF,请使用

window.focus()

答案 1 :(得分:0)

在弹出页面上添加:

<body onload="FocusWindow()">

将此函数添加到弹出窗口中引用的JavaScript文件中。

function FocusWindow() {
window.focus();
}

背景信息为何会发生这种情况: https://support.microsoft.com/en-us/kb/979954

基本上你不能从另一个窗口聚焦一个窗口,你只能从你想要聚焦的窗口聚焦,是的,你读得正确。

所以我的解决方法是通过让自己专注于onload来利用这个bug。