【问题标题】:How to trigger (window).focus on page load?如何触发(window).focus 页面加载?
【发布时间】:2015-01-28 15:50:12
【问题描述】:

加载页面时,焦点/模糊状态未激活。例如,当切换到另一个选项卡 blur 显示时,在切换回页面时 focus 激活 - 但在第一次加载页面时,没有任何状态被激活,为什么?这是预期的行为还是我搞砸了?

$(function(){
$(window).focus(function() {
        document.title="focus";
    });

    $(window).blur(function() {
        document.title="blur";
    });
});

更新 似乎像 Rory 在 cmets 中建议的那样添加 }).focus(); 没有由于浏览器的变化而不再有任何区别 - 所以我仍在寻找一种方法来检测页面加载的焦点。

更新 2 我添加了一个 onload 来充当“假装焦点”,到目前为止,这是我想出的最好的。不知道这是否是一个合理的解决方案,所以如果你有更好的解决方案,我很乐意参与其中。

window.onload = function(){
    document.title="focus";
};

window.onblur = function() {
    document.title="blur";
};

window.onfocus = function() {
    document.title="focus";
};

【问题讨论】:

  • 第一次加载页面时它已经有了焦点,因此不会引发任何事件。
  • 这似乎也依赖于浏览器 - Firefox 用你的代码给了我一个焦点事件,Chrome 没有。
  • @Antares42 我同意,这种行为似乎很不稳定。

标签: javascript jquery focus detection blur


【解决方案1】:

https://jsfiddle.net/lorenzo_f/362f7ot4/10/

if(document.hasFocus()) {
    $( "body" ).text("Windows got focus");
} else {
    $( "body" ).text("Windows lost focus");
}

$( window ).on("focus", function() {
    $( "body" ).text("Windows got focus");
});

$( window ).on("blur", function() {
    $( "body" ).text("Windows lost focus");
});
<!DOCTYPE html>

<html lang="it">
<head>

</head>
<body>


<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</body>
</html>

【讨论】:

    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多