包含修改帖子URL锚点的主题组件的Web组件会导致浏览器冻结

嘿,各位,

我窃取了这个漂亮的 Mermaid 主题组件,并对其进行了修改,以包含 RapiDoc 作为 Web 组件。它允许渲染 OpenAPI 规范。

当单击 Web 组件中的操作时,有时会冻结浏览器,并且我很难弄清楚发生了什么。
只有关闭标签页才有帮助。当嵌入到其他页面时,使用相同的 RapiDoc 版本和相同的 OpenAPI 规范不会出现这种情况。

它的作用是添加操作的 ID 作为 URL 的锚点,例如 _https://my-site/t/my-topic/150#post-/clusters/-clusterID-/gateway。我 猜测 有什么东西在监听 URL 更改,但在此情况下失败了,也许是因为 Web 组件尚未完全渲染以及/或在 shadow DOM 中找不到 ID。

我在控制台中看到了以下内容:

Promise Rejection: SyntaxError: '#main #put-/clusters/-clusterID-/appliances/-applianceID-/constraints, a[name=put-/clusters/-clusterID-/appliances/-applianceID-/constraints]' is not a valid selector.

携带与 URL 中锚点对应的 ID 的插入元素看起来像这样。

<section
  part="section-endpoint"
  id="patch-/clusters/-clusterID-"
  class="m-endpoint regular-font patch collapsed"
>

有人能给我一些 pointers 来找到问题的核心吗?

非常感谢!

回答我自己的问题:似乎这与 Discourse 无关。
某个参数组合导致 Web 组件进入 scheduleUpdate 循环。
抱歉打扰了。

供参考,我所做的如下:

  • 在主题组件中使用了 rapidoc 的非最小化版本
  • 在网站卡住时使用了调试器
  • 查看了调用堆栈,找到了触发重复更新的罪魁祸首(show-curl-before-try
  • 更改了 rapidoc 的参数,使其不再触发这种情况

如果您觉得此主题对讨论没有贡献/不相关,请随时删除。

无论如何,感谢您,再次抱歉打扰了。

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.