Principalmente este erro $ is not defined ocorre porque o jQuery não está carregado, no entanto, os scripts do cabeçalho não deveriam ser executados por padrão após o carregamento do jQuery?h.
Obrigado, mas este javascript funciona bem quando usado no console do desenvolvedor document.querySelector('.topic-list .topic-excerpt[href="/t/urltobechanged/8"]').setAttribute('href', "/t/newurltoset/17");
De alguma forma, quando é carregado do cabeçalho do Discourse, ele é retornado como “Uncaught TypeError: document.querySelector(…) is null”, não importa se eu o envolvo com :
function doSomething() {
or
document.addEventListener("DOMContentLoaded", function(event)
Alguma ideia de como esta única linha para alterar o atributo href deve ser executada, já que funciona bem no console do desenvolvedor?
Como o Discourse é uma SPA, depender do “DOMContentLoaded” do documento não será muito útil, pois o DOM do documento está sempre “carregado”, mas os elementos podem estar ausentes. Em vez disso, você vai querer usar Componentes como @merefield mencionou, ou algo como isto: How do you force a script to refire on every page load in Discourse? - #5 by simon. Desta forma, cada vez que a página muda, seu código pode verificar o elemento que você está tentando alterar.