javascript - Edge 浏览器中的 focus()

标签 javascript jquery html microsoft-edge dom-events

我正在使用 popup.focus() 在单击按钮后聚焦弹出窗口。 focus() 适用于所有浏览器,但 ****EDGE**** 浏览器除外。我面临的问题是间歇性的。有时我能够在浏览器上查看弹出窗口(子弹出对话框),有时在浏览器后面,即在桌面上,我能够通过任务栏上的闪烁确定弹出窗口已打开。

如有任何建议,我们将不胜感激。

var popup = new PopupWind(url,'config')
popup.setFeature('height', height)
popup.setFeature('resizable', 'no')
popup.setFeature('scrollbars', 'no')
popup.setFeature('left', xLoc) // IE
popup.setFeature('top', yLoc)
popup.setFeature('screenx', xLoc) // NS
popup.setFeature('screeny', yLoc)  
popup.open()
popup.focus();

我尝试使用它来使 focus() 在 EDGE 中工作,但它没有

popup.blur();
setTimeout( popup.focus,0); 

最佳答案

我有一个解决方案/Hack

请在您的 Edge 浏览器中打开解决方案的链接 https://codepen.io/PocketNinjaDesign/pen/OgbQXO

窗口没有间歇性聚焦!

问题是您需要弄乱页面的焦点。如果您打开一个弹出窗口,然后将焦点放在父页面上,那么即使只移动父页面 1 个像素。单击该按钮将再次聚焦于弹出窗口。

因此,对于窗口方法似乎不起作用的瘫痪网络浏览器,除了等待几年让他们修复其 focus() 错误之外,您还能做什么。

好吧,hack 是通过生成一个临时的空弹出窗口来从父窗口中移除焦点。然后专注于主弹出窗口并关闭临时弹出窗口。全部由 setTimeout @ 300ms 包裹,再低一点,它似乎对我不起作用。

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div id="button" class="bttn">Open Popup</div>
<div id="focus" class="bttn focus">Focus on Popup</div>

JavaScript

// This is the main guts of this page!
var isMSEdge = function() {
  return window.navigator.userAgent.toLowerCase().indexOf('edge') > -1;
};

$(function() {
  var $bttn = $('#button');
  var $focusBttn = $('#focus');
  var tempWin;
  var testWindow;

  $bttn.on('click', function() {
    testWindow = window.open('', "pocketninja", "width=300, height=300");
    $focusBttn.show();
    $(this).hide();
  });

  $focusBttn.on('click', function() {
    if(testWindow && isMSEdge()) {
        tempWin = window.open('', 'temp', 'width=1, height=1');

        setTimeout(function() {
          testWindow.focus();
          tempWin.close();
        }, 300);   
    }
    else {
      testWindow.focus();
    }
  });
});

关于javascript - Edge 浏览器中的 focus(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948486/

相关文章:

javascript - jquery 在多个 DIV 上滑动效果并嵌入关闭效果

javascript - 如何捕获非事件选项卡上的按键事件

javascript - 我可以在应用 xslt 样式表后使用 javascript 访问源 xml 吗?

javascript数字变量显示0而不是null

javascript - 未捕获的类型错误无法读取未定义的属性社交共享

javascript - React 中的 Import() - 在 Chrome/Firefox 扩展中引发错误

html - 在 HTML 选择选项中设置上标元素的样式

javascript - Microsoft Edge 上的 SVG Logo 显示比其他浏览器大 10 倍

javascript - MailChimp AJAX API 未调用 API

php - 快速问题,IF 语句似乎不适用于禁用元素的 while 循环