Discourse 在旧版浏览器上无法加载

我是一名 community(dot)jenkins(dot)io 的用户(抱歉,我只能发布 2 个链接),据一位管理员称,该网站使用的是由官方 Discourse 团队赞助的 Discourse 实例。标题/源代码中的 Meta 标签显示为 Discourse 2.9.0.beta2

在本周一至周三(2022-03-14/16)之间的某个时间,该网站在旧版 Android Firefox 浏览器上无法加载。具体来说是 Firefox Android 68.11.0。这显然也是其他浏览器(如 Waterfox、FireStick 上的 Silk 浏览器)的核心问题。我以前从未访问过这里,但它也无法加载。页面似乎会获取数据几秒钟,然后变为空白。“请求桌面站点”也显示为空白。“查看源代码”会跳转到一个空白页面。

我在 Jenkins 网站上报告了此问题,管理员指出这可能是“因为 Firefox 68 中没有 replaceAll”。他们还提供了来自 Saucelabs 的证据(大约在 00:17 秒标记处出现错误消息)。

本月早些时候,一项 JavaScript 更改破坏了 StackOverflow 功能(链接如下),这是 StackOverflow/Exchange 网站第二次出现此问题。他们之前在十二月份也曾破坏过一次,然后修复了,我们真诚地希望他们能够撤销该更改并恢复该功能。

有趣的是,我启动了一台运行 FF 52.9.0 ESR 的 WINXP PC,尽管有“您的浏览器太旧,无法在此网站上运行”的横幅,但该网站似乎加载正常,所以这似乎是相当特定/晦涩的问题。

我想请 Discourse 团队审查所做的更改,以及是否有办法缓解此破坏性更改。我知道并非所有内容都能永远得到支持,尤其是在测试范围之外时,但当它被报告并且如果是一个明显的修复程序,并且不会显著影响可操作性时,请考虑一下。我不期望所有功能都可用,只是一些核心功能(至少可以阅读内容)。

StackExchange 链接:meta(dot)stackexchange(dot)com/q/376694

10 个赞

我们当然希望在旧的不受支持的浏览器上至少显示一个只读视图。渲染中断并只显示一个白页是一个错误。

我们将在下周着手处理此回归问题。

8 个赞

replaceAlliOS <= 13.3 上不受支持

此 PR 将添加对此功能的检测,并在需要时回退到基本 HTML 视图:

12 个赞

3 个帖子已合并到现有主题:Frontend on Prod Site Down – Ember/Test error

感谢 @Ian_W 的报告 :+1:

我们现已修复此问题。此主题将在一天后关闭。

4 个赞

我在 Android 上的旧版 Firefox 上只能取得部分成功。

meta.discourse.orgcommunity.jenkins.io 上,我都看到了“浏览器太旧”横幅,与运行 FF 52.9.0 ESR 的 WINXP PC 上的情况相同。

但没有主题,只有徽标和页脚 [主页 .. 隐私政策]。

在 Jenkins 网站上,我确实看到了类别、类别描述和“主题”计数,但点击任何类别后,我仍然看不到任何问题。

4 个赞

1 个赞

我在 Firefox 40 中让 meta.discourse.org 渲染了旧的 HTML 版本:

所有低于 77 版本的 Firefox 都应该出现这种情况。

3 个赞

如前所述,我的截图来自 Android 版本。该网站在桌面版本上运行似乎没有问题。

我不知道如何从 FF Android 浏览器中提取更多信息来帮助调试。

3 个赞

刚刚在我的手机上安装了已弃用的 fennec Firefox 68.9,现在似乎可以正常工作了:

在尝试重现此 bug 时,有什么想法是我遗漏的吗?

3 个赞

嗯,我不太确定该说什么。我刚重置了一部出厂设置的安卓手机(运行的是 7.0,因为它是一部旧手机),下载了 Firefox Android 68.11 APK,安装后导航到 meta(.)discourse(.)org **,然后看到了 之前的截图

然后情况变得奇怪了。转到 meta(.)discourse(.)org/t/ **,我看到了:

“哎呀!该页面不存在或已设为私有。”

但随后我看到一个“热门”和“最新”主题列表,并且可以看到这个主题。
点击该主题,我看到主题标题,以及“bug”、“pri-high”,但没有内容。

**: 2 链接限制帖子
(也无法通过 UI 上传截图,所以不得不逐个回复上传)

1 个赞

1 个赞

以防万一有人能想出在 iPhone 6 上使用 Discourse 的解决方案,在我最终购买新手机之前,我会一直关注。

1 个赞

我遇到了同样的问题,如下所述:

1 个赞

对于 iOS 13 或更早版本,或者 Android 上已弃用的 Firefox Fennec,我们应该显示 HTML 视图。

但是,我们未能做到这一点,因为没有 HTML 视图,原因如下:

这在我们代码库中存在已久。

包含爬虫内容以便我们回退到 HTML 视图的成本很高,所以我们是否想将旧版 Safari 添加到

这样它只会在必要时执行?

另一种选择是告诉 Babel 转译 replaceAll / 寻找一个足够好的 polyfill。

抄送 @sam @david @gerhard

5 个赞

我能想到的其他替代方案:

  1. 完全删除browser_update_user_agents,使用符合IE6的XHR请求来获取内容,以便在这些移动浏览器上进行渲染。(移动设备上的javascript禁用功能已经失效)

  2. Polyfill replaceAll

  3. 无条件包含爬虫内容(移动设备也包含)

  4. 与(1)相同,但将设置保留为微优化,回退到XHR。

我倾向于(1)和(3)之间的选择,(4)

7 个赞

3 我担心我们最终不得不这样做,因为制造商放弃的移动设备数量只会随着时间的推移而增加。这将增加填充模板的一些服务器负载,并增大我们在移动设备上的 HTML 体积,但依我看,我们应该这样做。

所以我的建议是,我们执行 3 研究执行 1 和 2 是否可行。

5 个赞

我们可以颠倒过来,只在特定浏览器上启用移动优化,这样我们仍然可以在 95% 的移动流量上实现优化,同时保持非常安全?

3 个赞