許多道歉的標題,這不太合理;我不知道如何描述這一點。建議將不勝感激。我想多次執行此JavaScript與不同的目標
我有這個腳本,Squarespace注入到網頁上的每篇博文的頁腳,以及博客條目的單獨頁面的頁腳。當加載到單個頁面時,代碼執行得很好。但是,在每個博客條目加載一次的網頁上,事情會變得更加混亂。
這是代碼:
<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>
的瀏覽器讀取代碼注入由行個別文章頁面線會發生什麼,我想,是因爲打算執行腳本。
但是,由於在博客摘要頁面上Squarespace注入一次PER文章的代碼,我認爲這就是導致問題的原因。該代碼執行3,4,5倍,並從.getJSON函數的結果被預設於<a class="entry-comments">
部每次執行 - 什麼結束意外事件發生的是:
「1個註釋」重複三次(頁面上的每個博客條目一次)。此外,這些<a>
元素中的每一個元素的HREF都是相同的URL,這表明var 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]
我希望這不是太長或含糊。
您不能在同一頁面多次注入此代碼,因爲這會創建重複的ID,並且ID必須是唯一的。您可能必須將每個博客條目放入iframe中,以免發生衝突。 – Barmar
對不起,我實際上已將ID更改爲類。讓我編輯OP,謝謝 –
@Barmar iframes是一個糟糕的解決方案,他應該使用類而不是ID運行它,並使用循環/每個子句爲每個需要的一個執行一次。 – casraf