カスタムJavaScriptはリフレッシュ後にのみ適用され、locationプラグインのカテゴリが作成されます

こんにちは。

以下のスクリプトは、場所プラグインでツールチップを永続的に表示し、タイプ(イベント、会場など)に応じて並べ替えるために色を付けます。凡例とフィルターを検討中です。

状況は、それが機能するのですが、ページをリロードした後だけで、URLからページにアクセスしたときは機能しません。

両方のケースでコンソールにエラーの違いはなく、関数に遅延を追加しても何も変わりません。

テーマ編集メニューからヘッダーにJavaScriptを追加した際に、このような経験をした方で解決策を見つけた方はいらっしゃいますか?

以下は結果の画像です。

ここでのエラーはコードの有無にかかわらず表示されるため、コードとは関係ありません。

<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のapi.onPageChange()を使用する必要があると思います。

「いいね!」 4

はい、スクリプトの使用はまもなく非推奨になります。

「いいね!」 2

参考になりました。Ember.jsフレームワークで window.location.reload(true) をヘッダーで代用しようとしていた手間が省けました。

ヘッダーフィールドはセキュリティ上の理由で廃止されるのでしょうか?というのも、ヘッダーでバニラJavaScriptをテストできるのは依然として便利だからです。

いいえ、スクリプトタグ(ヘッダー内)でプラグインAPIを使用することが非推奨になっています。

「いいね!」 1

ヘッダーのJavaScriptがまもなく非推奨になるのであれば、いくつか適応させる必要があります。このヘッダーフィールドには、この今後の状況に関する注意書きがあるかもしれません。

理由はあると思いますが、スクリプトがヘッダーにあると、管理者が迅速に調整できるため、残念かもしれません。例えば、特定のカテゴリに対してJavaScript関数が特定の数に一致した場合にイベント登録を閉じるなどです。

申し訳ありません、ヘッダースクリプトについて非推奨になると言っていたJayではなく、あなたに返信してしまいました。ヘッダースクリプトは、あらゆるウェブサイトCMSのように、簡単な変更に非常に便利だと思います。

実際、マップページにアクセスするたびにマップページのみをリロードするソリューションを見つけました。

ヘッダースクリプトが非推奨になる場合、これを他の人に共有する価値があるかどうか疑問に思っていますか?この投稿のスクリプトは、マップ上のイベントタイトルのコンテンツに応じて色カテゴリを設定します。これはAPI機能ではなく、迅速に変更できるはずです。

`

`

「いいね!」 1

誤解されていると思います。<script type="text/discourse-plugin"><script type="text/x-handlebars"> のようなヘッダーのスクリプトタグは非推奨であり、通常の <script> タグのことではありません。

「いいね!」 2

はい、明確にしていただきありがとうございます。JavaScriptを配置できることを嬉しく思います。もし時間があれば、私が残したコードをチェックしてみてください。Ember環境でも役立つかもしれません。ページをリロードするので、JSが適用されます。 nicest ではありませんが、マッププラグインページではうまく機能します!

「いいね!」 2

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