【问题标题】:JQuery, first window click, next focusJQuery,第一个窗口点击,下一个焦点
【发布时间】:2017-01-23 23:24:06
【问题描述】:

如何在 jQuery 中首先调用函数 click 和下一个 focus 窗口? 我试过了:

$(window).click(function(){
    console.log(1);
});

$(document).focus(function(){
    console.log(2);
});

$(document).blur(function(){
    console.log(3);
});

但是 $(document).focus 和 .blur 不起作用

我拥有的代码,例如:

var isActive = false, wasClick = false;
$(window).click(function()
{
    if (!$(this).hasClass('button') && !$(this).hasClass('otherElement'))
    {
        isActive = false;
        wasClick = false;
        console.log('unactive varible');
    }
});

$(window).focus(function()
{
    if (wasClick) 
    {
        isActive = true;
        wasClick = false;
        console.log('focus');
    }
});

$(window).blur(function()
{
    if (isActive)
    {
        wasClick = true;
        isActive = false;
        console.log('blur');
    }
});

$('.button').click(function()
{
    isActive = true;
    console.log('button click');
});

我执行以下步骤:

  1. 点击按钮
  2. 我在 windows 中点击到其他程序
  3. 我通过点击背景返回我的页面

输出控制台:

button click
blur
focus
unactive varible

我想要:

button click
blur
unactive varible

【问题讨论】:

    标签: jquery click window focus blur


    【解决方案1】:

    据我所知,焦点事件在窗口对象上并不可靠(至少不是在所有浏览器中)。 您可以使用document.hasFocus() 定期检查页面的焦点状态,但我想这不完全是您想要的?

    【讨论】:

    • 哦,谢谢,我不考虑这个,但是当我将它添加到 $(window).focus 时它会起作用: $(window).focus(function() { if (!document. hasFocus()) 返回 false; if (wasClick) { isActive = true; wasClick = false; console.log('focus'); } });非常感谢!
    • 很高兴能帮上忙!
    • 哦,这行不通。这有一些错误..有时会绕过 document.hasFocus(),当我示例切换卡片时,模糊和焦点功能会运行多次..
    • 我自己没有测试过这个,但是快速搜索返回了这个,这可能很有用:stackoverflow.com/questions/1760250/…也许接受的答案的第二个代码部分可能对你有用?
    • 我读过这个,但我创造了别的东西。我有 $(window).click 并且我想在 $(window).focus 之前检查这个函数的结果 - 只有当 window 被点击时(查看第一篇文章中的代码)
    猜你喜欢
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多