あまり意味のないタイトルで申し訳ありません。これをどのように説明すればよいかわかりません。提案をいただければ幸いです。
Squarespace が Web ページの各ブログ投稿のフッターと、ブログ エントリの個々のページのフッターに挿入するこのスクリプトがあります。個々のページに読み込まれると、コードは正常に実行されます。ただし、ブログ エントリごとに 1 回読み込まれる Web ページでは、少し面倒です。
これはコードです:
<a name="comments-outer-wrapper" />
<a class="muut" href="https://muut.com/i/test/comments:test">Comments</a>
<script>
var mtitle = document.title.slice(0, -13);
var mhref = $("article").attr("id").substring(8);
var mcount = "//api.moot.it/postcounts?path=/test/comments:" + mhref;
$.getJSON(mcount, function(json) {
var results = $(".entry-actions");
$.each(json, function(key, val) {
results.prepend("<a class=\"entry-comments\" href=\"{permalink}#comments-outer-wrapper\" title=\"Comments\">" + val["size"] + " Comments</a>");
});
});
$(".muut").attr( "href","https://muut.com/i/test/comments:" + mhref);
$(".muut").attr( "title",mtitle);
</script>
ブラウザーがコード インジェクションを読み取るときに、個々の記事ページが 1 行ずつ表示されるのは、スクリプトが意図したとおりに実行されるためだと思います。
ただし、ブログの概要ページでは Squarespace が記事ごとに 1 回コードを挿入しているため、それが問題の原因であると思います。<a class="entry-comments">
コードは 3 回、4 回、5 回実行され、実行ごとに .getJSON 関数の結果がセクションの先頭に追加されます。最終的には次のようになります。
「1 コメント」は 3 回繰り返されます (ページのブログ エントリごとに 1 回)。<a>
さらに、これらの各要素の HREFは同じ URLvar mtitle
です。これは、 、var mhref
、およびvar mcount
がそれぞれ同じであることを示唆しています。変数は、各インスタンス間で削除、更新、または未定義ではありませんでした。
だから、私の原始的な心の中で、私が信じていることはこれです:
[BLOG WEBPAGE]--[mtitle3]-[mhref3]-[mcount3]
|
|--[BLOG ARTICLE 1]--[SCRIPT]-[mtitle1]-[mhref1]-[mcount1]
|
|--[BLOG ARTICLE 2]--[SCRIPT]-[mtitle2]-[mhref2]-[mcount2]
|
|--[BLOG ARTICLE 1]--[SCRIPT]-[mtitle3]-[mhref3]-[mcount3]
最後に収集された変数のみが使用されています。
私がしたいことはこれです:
[BLOG WEBPAGE]
|
|
[MASTER SCRIPT]--[mtitleX]-[mhrefX]-[mcountX]
|
|--[BLOG ARTICLE 1]--[mtitle1]-[mhref1]-[mcount1]
|
|--[BLOG ARTICLE 2]--[mtitle2]-[mhref2]-[mcount2]
|
|--[BLOG ARTICLE 1]--[mtitle3]-[mhref3]-[mcount3]
これが長すぎたり、あいまいすぎたりしないことを願っています。