如何在窗口调整大小时隐藏 Facebook 聊天框?

Posted

技术标签:

【中文标题】如何在窗口调整大小时隐藏 Facebook 聊天框?【英文标题】:How to hide Facebook chat boxes on Window resize? 【发布时间】:2013-04-05 09:21:45 【问题描述】:

我试图在 Jquery 中重现 Facebook 如何在视口大小更改时隐藏或显示打开的聊天框。基本上,如果您打开了 6 个聊天窗口,并且如果您调整或缩小浏览器的大小,那么如果这 6 个无法修复屏幕大小,则某些聊天窗口会被隐藏。

我正在使用函数 $(window).resize() 来检测所有打开窗口的总宽度加上一些边距是否大于窗口的宽度,然后隐藏第一个聊天窗口,或者显示最后一个如果有更多窗户的空间。基本的出栈或入栈...

我的方法不起作用,因为每当运行调整大小时,我的脚本都会不断尝试隐藏或显示窗口...(参见下面的代码)

欢迎提出任何建议。

ChatWidget.isEnoughRoom = function()

return ($(window).width() > ((ChatWidget.WINDOW_WIDTH * $('.chatWindowWidget:visible').length) + ChatWidget.CONTACTLIST_WIDTH + 100));

;

$(window).resize(function()

    if(!ChatWidget.isEnoughRoom()) 
            $('.chatWindow:visible:last').hide() ;
     else 
        $('.chatWindow:hidden:last').show() ;
    

)

【问题讨论】:

你能说得更清楚些吗?提供代码? Window_Width 为 240px,contactlist_width 为 200px。基本上将所有可见窗口的总宽度加上 100px 边距的联系人列表窗口。 【参考方案1】:

您的问题与每次调整窗口大小时多次触发调整大小功能有关。我用chrome测试过,它触发了两次。 试试这个: https://github.com/louisremi/jquery-smartresize

【讨论】:

好建议!它可以一次隐藏或显示 1 个聊天窗口,但是如果我将视口的大小非常快地调整为非常大或非常小的尺寸,那么它不会适当地减少或增加窗口的数量......我已经重写了我的函数来显示具有最终窗口大小的正确数量的框。 尝试使用超时等待调整大小并获取宽度。在 chrome 中很好奇,在 rezise 时窗口采用 2 个宽度,一个是 1px,另一个是实际宽度。这似乎不是 jQuery 的问题,而是完成这项工作的 javascript 函数。 如果答案对您有用,请接受它作为解决方案,我认为您还不能投票。我们都喜欢在这里得到一些分数 =) 我的意思是,在 *** 中,当您提出问题并且有人回答了一个好的解决方案时,您可以接受该解决方案作为您问题的回答,并为给出解决方案的用户提供一些分数。这个很棒的网站使用分数来为其用户提供某种状态。 =)

以上是关于如何在窗口调整大小时隐藏 Facebook 聊天框?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法隐藏标准的 Facebook 聊天栏(无需离线)?

动态调整视图大小 osx

我在玩 swf 游戏时如何阻止聊天窗口弹出?

当调整大小小于元素时,如何使元素隐藏在 UIView 中

Facebook评论框移动版未调整大小

在窗口调整大小时一一隐藏菜单项