window.focus(), self.focus() 在 Firefox 中不起作用

IT技术 javascript jquery jquery-plugins
2021-02-16 21:10:05

大家好,我正在开发一个聊天应用程序......我有多个聊天窗口......我想知道哪个窗口包含新消息......我有以下代码......

function getCount()
{
    $.ajax({
       type: "POST",
       url: baseUrl + '/Chat/count',
       data: "chat_id=" + document.ajax.chat_id.value,
       success: function(msg){
                if(msg == 'new1') {
                    self.focus();
                                            //window.focus();

                }
            }
    });
}

如果一个接线员参加两个聊天......

例如网址就像 http://localhost/nisanth/admin/Chat/index/chatId/15 http://localhost/nisanth/admin/Chat/index/chatId/16

http://localhost/nisanth/user/Chat/index/chatId/15 http://localhost/nisanth/user/Chat/index/chatId/16

如果user 16输入消息我需要关注

http://localhost/nisanth/admin/Chat/index/chatId/16

此代码适用于 IE,但不适用于 firefox...请给我一个解决方案...上面的代码在同一个 html 中

3个回答

如果设置了安全选项,Firefox 只会服从引发窗口的请求,并且默认情况下不会设置。据我所知,Chrome 根本不会关注 focus() 请求。Safari 确实遵守 focus() 请求。

特定的 Firefox 设置位于“工具”->“选项”(Linux 上的“编辑 -> 首选项”,也可能是 MacOS)对话框中。有一个“内容”选项卡,其中有一个用于启用 Javascript 的复选框。随着是一个“高级”按钮,带来了另一个对话框,其中一个发现一个复选框,以允许(或不允许)的升高和通过页代码降低窗口。

编辑:这是一个测试页面:http : //gutfullofbeer.net/focus1.html,您应该能够看到 Firefox在页面调用时弹出一个窗口window.focus()您必须设置浏览器,以便window.open()在新的单独窗口而不是选项卡中打开新窗口(使用 来创建),否则您可以在辅助页面打开时撕下该选项卡。

可悲的是,这个答案不再相关,因为首选项窗口发生了巨大变化,并且在那里不再找到设置。
2021-04-16 21:10:05
alert 正在工作,self.blur(),working,window.moveTo() 这些都在工作 :(...如果 alert() 正在工作,那么窗口就会聚焦,但我的客户不想要那样 ;)
2021-04-23 21:10:05
@ThomasPaine 古老的 Stackoverflow 问题是一个有趣的问题。
2021-04-25 21:10:05
那么你一定是做错了什么,因为它绝对有效。当您认为您对“window.focus()”的调用正在发生时,您是否尝试过发出“alert()”?
2021-04-29 21:10:05
我在我自己的应用程序中使用了 window.focus(),并且当浏览器配置为允许它时,我 100% 确定它在 Firefox 中工作。
2021-05-04 21:10:05

我遇到了同样的问题,虽然我的 JS 脚本有问题,但经过长时间的搜索,我找到了解决方案:

1) 在新选项卡中,在地址栏中键入about:config并按“Enter”按钮。点击按钮“我接受风险!” 为了确认警告

2)在搜索栏输入dom.disable得到dom.disable_window_flip

3)如果属性dom.disable_window_flip为true,双击它,将值由true切换为false

对于希望关注某个选项卡的其他任何人,另一个选项卡(选项卡 A)可以将不同的选项卡(选项卡 B)置于最前面。

如果window.name选项卡 B 的为“myWindow123”,则在选项卡 A 中运行:

window.open('', 'myWindow123');

如果您想重新关注打开您的选项卡,请运行:

window.open('', window.opener.name);