شكرًا، ولكن إذا كان هذا جافاسكريبت، فإنه يعمل بشكل جيد عند استخدامه في وحدة تحكم المطور document.querySelector('.topic-list .topic-excerpt[href="/t/urltobechanged/8"]').setAttribute('href', "/t/newurltoset/17");
بطريقة ما، عندما يتم تحميله من رأس Discourse، يتم إرجاعه كـ “Uncaught TypeError: document.querySelector(…) is null”، بغض النظر عما إذا كنت أقوم بتغليفه بـ:
function doSomething() {
أو
document.addEventListener("DOMContentLoaded", function(event)
أي فكرة عن كيفية تشغيل هذا السطر الواحد لتغيير السمة href حيث أنه يعمل بشكل جيد في وحدة تحكم المطور؟
نظرًا لأن Discourse هو SPA، فإن الاعتماد على حدث “DOMContentLoaded” في المستند لن يكون مفيدًا جدًا، حيث أن DOM الخاص بالمستند “محمّل” دائمًا ولكن قد تكون العناصر مفقودة. بدلاً من ذلك، ستحتاج إلى استخدام المكونات كما ذكر @merefield، أو شيئًا مثل هذا: How do you force a script to refire on every page load in Discourse? - #5 by simon. بهذه الطريقة، في كل مرة تتغير فيها الصفحة، يمكن لرمزك التحقق من العنصر الذي تحاول تغييره.