如何确定用户是否切换到当前浏览器的另一个标签页

4

我希望使用jQuery或JavaScript确定用户是否在同一浏览器上切换了选项卡?

也就是说,如果用户当前正在浏览器上打开mozilla-firefox选项卡1,现在他已经打开了另一个选项卡,比如选项卡2,那么弹出窗口应该出现,并显示消息“选项卡已更改”。

3个回答

10
我相信你可以使用 window.onblur event,当当前页面失去焦点时会触发。
window.onblur = function() {
    // Your action here
};

在jQuery中,您可以这样编写
$(window).blur(function() {
    // Your action here
});

这也会在你聚焦于检查侧边栏时触发,从而可能导致奇怪的行为。 - anonymous-dev
@anonymous-dev 这个答案已经超过十年了,并且已经关闭了一半以上的时间。更好的解决方案是使用页面可见性 API https://developer.mozilla.org/zh-CN/docs/Web/API/Page_Visibility_API - Liam Newmarch

7

没有jQuery

window.onblur = function () {
    // do some stuff after tab was changed e.g.
    alert('You switched the tab');
}

使用jQuery:

$('window').blur(function () {
    // do some stuff after tab was changed e.g.
    alert('You switched the tab');
});

当然,弹出警告框并不是最好的选择,因为它会再次聚焦当前选项卡 :)

这也会在你聚焦于检查侧边栏时触发,从而可能导致奇怪的行为。 - anonymous-dev

4
这可能有效,但会在用户离开网站时弹出,而不仅仅是在标签更改时。
window.onunload = popup;

function popup() {
  alert('tab changed');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接