Componente de tema contendo um web component que modifica o âncora da URL do post trava o navegador

Olá pessoal,

Roubei o belo componente de tema de sereia e o modifiquei para incluir o RapiDoc como um componente web. Ele permite a renderização de especificações OpenAPI.

Ao clicar em uma operação no componente web, às vezes ele trava o navegador e tenho dificuldade em descobrir o que está acontecendo.
Apenas fechar a aba ajuda. Isso não acontece com a mesma versão do RapiDoc e a mesma especificação OpenAPI quando incorporada em outras páginas.

O que ele faz é adicionar o ID da operação como uma âncora à URL, por exemplo, _https://my-site/t/my-topic/150#post-/clusters/-clusterID-/gateway. Eu acho que há algo ouvindo as mudanças na URL que falha neste caso, talvez porque o componente web ainda não foi totalmente renderizado e/ou o ID não pode ser encontrado no shadow DOM.

Vi o seguinte no console:

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

O elemento inserido que carrega o ID correspondente à âncora na URL se parece com isto.

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

Alguém tem alguma dica para me ajudar a chegar ao cerne do problema?

Muito obrigado!

Respondendo à minha própria pergunta: Parece que não teve nada a ver com o Discourse, afinal.
Uma certa combinação de parâmetros enviou o componente web para um loop de scheduleUpdate.
Desculpe pelo barulho.

Para referência, eis o que fiz:

  • Usei uma versão não minificada do rapidoc no componente de tema
  • Usei o depurador enquanto o site estava travado
  • Olhei para a pilha de chamadas e encontrei o culpado que acionava atualizações repetidas (show-curl-before-try)
  • Altere os parâmetros do rapidoc para não acionar mais esse cenário

Se você achar que este tópico não contribui para a discussão/é irrelevante, sinta-se à vontade para removê-lo.

Obrigado de qualquer forma e desculpe pelo barulho novamente.

2 curtidas

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