【问题标题】:jQuery - window focus, blur events not triggering - works in Firefox and ChromejQuery - 窗口焦点,不触发模糊事件 - 适用于 Firefox 和 Chrome
【发布时间】:2009-08-10 15:49:48
【问题描述】:

简而言之;我写了一个简单的聊天应用程序供我和朋友使用。当运行应用程序的窗口没有焦点(最小化或在其他窗口后面)并且有消息进来时,我想更改窗口标题栏以用作警报。就像 Google 的聊天应用程序在 GMail 中所做的一样。

一切都在 Firefox 和 Chrome 中完美运行,但在 IE7 中却没有(尚未测试 8)。

这是我用来确定窗口是否有焦点的代码。这可以用不同的方式写成也可以在 IE 中工作吗?此外,我愿意接受任何其他方法来完成同样的事情。非常感谢。

  $(window).bind("blur", function() {
    hasfocus = false;
  });

  $(window).bind("focus", function() {
    hasfocus = true;
  });

【问题讨论】:

    标签: jquery internet-explorer onblur onfocus event-triggers


    【解决方案1】:

    我不认为谷歌聊天使用窗口来检查焦点。它使用与您聊天的用户的文本框。一旦文本框收到焦点“说...”停止循环。

    您可能需要检查鼠标移动以查看窗口是否具有焦点。除此之外,我仍在试图弄清楚如何在尝试保持页面活动时检查窗口的焦点。

    【讨论】:

      【解决方案2】:

      这段 jquery 可以在 IE 和所有优秀的浏览器(chrome、ff 等)中使用。关键是 IE 支持的 document focusin\focusout。

      $(function(){
          $(window).bind('blur', function(){
              console.debug('window blur');
          });
      
          $(window).bind('focus', function(){
              console.debug('window focus');
          });
          // IE EVENTS
          $(document).bind('focusout', function(){
              alert('document focusout');
          });
      
          $(document).bind('focusin', function(){
              alert('document focusin');
          });
      });
      

      【讨论】:

      • 当页面上有文本区域时,该脚本在 IE(8) 中会失效。当您单击文本区域时,文档和窗口失去焦点。如果您将焦点放在 textarea 和切换选项卡上,然后再切换回来,它会保持“模糊”状态。
      • 我无法在 IE8 jsfiddle.net/KCW7G/8 中使用这个 jsfiddle 复制它
      【解决方案3】:

      如果您尝试绑定到文档元素会发生什么?

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多