In Admin > Customize > Themes > in de headersectie heb ik het volgende toegevoegd, maar het geeft de volgende foutmelding:
Ongeïntercepteerde ReferenceError: $ is niet gedefinieerd
Meestal treedt deze $ is not defined fout op omdat jQuery niet geladen is, maar zouden de scripts in de header niet standaard moeten worden uitgevoerd nadat jQuery is geladen?
(Maar zelfs dan moet u zich ervan bewust zijn dat Discourse een SPA PWA is, dus u kunt racecondities tegenkomen als u afhankelijk bent van het feit dat bepaalde elementen zijn gerenderd - en de oplossing daarvoor is om Ember Components te gebruiken die zijn gerenderd in specifieke plugin-uitgangen in combinatie met modifiers)
Bedankt, maar als dit javascript is, werkt het prima wanneer het in de ontwikkelaarsconsole wordt gebruikt document.querySelector('.topic-list .topic-excerpt[href=\"/t/urltobechanged/8\"]').setAttribute('href', \"/t/newurltoset/17\");
Op de een of andere manier, wanneer het vanuit de discourse-header wordt geladen, wordt het geretourneerd als “Uncaught TypeError: document.querySelector(…) is null”, ongeacht of ik het omsluit met:
function doSomething() {
of
document.addEventListener("DOMContentLoaded", function(event)
Enig idee hoe deze enkele regel om het href-attribuut te wijzigen moet worden uitgevoerd, aangezien het prima werkt in de dev-console?
Since Discourse is an SPA, relying on the document “DOMContentLoaded” won’t be very helpful, since the document DOM is always “loaded” but the elements can be missing. Instead you’ll want to use Components as @merefield mentioned, or something like this: How do you force a script to refire on every page load in Discourse? - #5 by simon. This way every time the page changes, your code can check for the element you’re trying to change.