جافاسكريبت مخصص يتم تطبيقه فقط بعد التحديث، إنشاء فئات لمكون الموقع الإضافي

مرحباً،

يُظهر النص البرمجي أدناه في إضافة الموقع النص المساعد بشكل دائم ويمنحه ألوانًا لفرزه وفقًا لنوعه (أحداث، أماكن، إلخ)، أعمل على وسيلة إيضاح وربما مرشح.

الوضع هو أنه يعمل، ولكن فقط بعد تحديث الصفحة، ولا يعمل عند الهبوط على الصفحة من عنوان URL.

لا توجد فروق في الأخطاء في وحدة التحكم في كلتا الحالتين وإضافة تأخير أعلى للدالة لا يغير شيئًا.

هل واجه أي شخص هذا عند إضافة جافاسكريبت إلى الرأس من قائمة تحرير السمة ووجد حلاً؟

هذه صورة للنتيجة

الأخطاء هنا تظهر مع أو بدون الكود لذا فهي غير مرتبطة به

<script>
document.addEventListener('DOMContentLoaded', function() {
  // Apply CSS to change the alt text style
  var style = document.createElement('style');
  style.type = 'text/css';
  style.innerHTML = `
    /* Ensure alt text is bold, underlined, and has conditional color */
    .leaflet-marker-pane img[alt] {
      font-weight: bold !important; /* Make text bold */
      text-decoration: underline !important; /* Underline the text */
      white-space: nowrap; /* Prevent the text from wrapping to a new line */
    }
  `;
  document.head.appendChild(style);

  // Give the page a moment to load and the images to be rendered
  setTimeout(function() {
    var images = document.querySelectorAll('.leaflet-marker-pane img');

    images.forEach(function(img) {
      var title = img.getAttribute('title');
      if (title) {
        title = title.length > 10 ? title.substring(0, 10) + '..' : title;
        img.setAttribute('alt', title);
        img.setAttribute('title', title);

        if (title.includes('/')) {
          img.style.color = 'white';
        } else {
          img.style.color = 'black';
        }
      }
      img.setAttribute('src', '');
    });
  }, 1000);  // Delay execution by 1 second (1000 ms)
});


</script>

إذا لم أكن مخطئًا، نظرًا لأن Discourse هو تطبيق ذو صفحة واحدة، أعتقد أنه سيتعين عليك استخدام api.onPageChange() الخاص بواجهة برمجة تطبيقات المكون الإضافي لهذا الغرض.

4 إعجابات

حسنًا، وسيتم إيقاف استخدام البرامج النصية قريبًا.

إعجابَين (2)

من الجيد معرفة ذلك، لن أزعج نفسي باستخدام نافذة معدلة.location.reload(true) في الرأس لإطار عمل ember.js والذي ربما كان حلاً لذلك.

هل يتم إيقاف حقل الرأس لأسباب أمنية؟ الأمر هو أنه لا يزال من الملائم اختبار جافاسكريبت عادي فيه.

لا، يتم إهمال استخدام واجهة برمجة تطبيقات المكون الإضافي في علامات النص البرمجي (في الرأس).

إعجاب واحد (1)

حسناً، إذا تم إيقاف JavaScript في الرؤوس قريباً، فسيتعين عليّ تكييف بعض الأشياء، ربما يمكن أن يحتوي حقل الرأس هذا على إشعار بخصوص هذا الوضع القادم.

أعتقد أن له أسبابه، ولكنه قد يكون مؤسفاً لأن النصوص البرمجية في الرؤوس مفيدة وتسمح بإجراء تعديلات سريعة للمسؤول مثل: إغلاق تسجيل الحدث عندما يتطابق عدد معين بواسطة دالة JavaScript لفئة معينة.

عذرًا، لقد أجبتك أنت بدلاً من جاي الذي يقول إن البرامج النصية سيتم إيقافها، أتخيل أنه يتحدث عن البرامج النصية للرأس التي يسهل استخدامها للتعديلات السريعة تمامًا مثل أي نظام إدارة محتوى للمواقع الإلكترونية.

لقد وجدت حلاً في الواقع يقوم بإعادة تحميل صفحة “الخريطة” فقط في كل مرة تنتقل إليها.

أتساءل الآن عما إذا كان هذا يستحق المشاركة مع الآخرين هنا إذا كانت نصوص الرأس ستصبح مهملة؟ النص في هذا المنشور يسمح بفئات ألوان وفقًا لمحتوى عنوان حدث على الخريطة، ويجب تغيير هذا بسرعة وليس عبر ميزة واجهة برمجة التطبيقات.

<script> (function(){function e(){if(location.pathname.includes("/map")){if(!sessionStorage.getItem("map-refreshed")){sessionStorage.setItem("map-refreshed","true");requestAnimationFrame(()=>setTimeout(()=>location.reload(!0),100))}}}function t(){sessionStorage.removeItem("map-refreshed")}function n(e){const t=history[e];history[e]=function(){const n=t.apply(this,arguments);return window.dispatchEvent(new Event("locationchange")),n}}n("pushState"),n("replaceState"),addEventListener("popstate",()=>dispatchEvent(new Event("locationchange"))),addEventListener("locationchange",function(){location.pathname.includes("/map")?e():t()}),e();})(); </script>
إعجاب واحد (1)

أعتقد أنك أسأت فهمي. كنت أعني أن علامات <script> في الرأس مثل <script type="text/discourse-plugin"> و <script type="text/x-handlebars"> تم إيقافها، وليس علامات <script> العادية.

إعجابَين (2)

نعم، شكراً لك على التوضيح، يسعدني أننا نستطيع وضع جافاسكريبت، ألقِ نظرة على الكود الذي تركته إذا كان لديك وقت فقد يكون لا يزال مفيداً في بيئات إمبر، فهو يعيد تحميل الصفحة حتى يتم تطبيق جافاسكريبت. إنه ليس الأجمل ولكنه يعمل بشكل جيد لصفحة إضافة الخريطة!

إعجابَين (2)

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