在小熊博客上顯示網絡提及互動的分步指南
這篇文章展示如何使用 Webmention.io API 來顯示人們與您的部落格文章的所有互動。
您需要兩件事才能完成這項工作:
- 您的網站必須設定為使用 Webmention.io 服務。
- 您需要一些自訂 JavaScript 來顯示每篇部落格文章下方的互動。
設定 Webmention.io 本身超出了本文的範圍,因為網站已經提供了詳細的說明。
現在,讓我們繼續討論您需要的自訂 JavaScript。
JavaScript 程式碼
下面是完整的 JavaScript 程式碼。我將在程式碼之後解釋每個部分的工作原理。
if (document.querySelector("body").classList.contains("post")) { function setContent(child) { switch (child["wm-property"]) { case "in-reply-to": return child.content?.text; case "like-of": return "liked this"; case "repost-of": return "reposted this"; default: return "interacted with this post in an unknown way"; } } async function fetchInteractions(headerTitle) { const response = await fetch("https://webmention.io/api/mentions.jf2?target=" + document.URL); const data = await response.json(); if (data && data.children.length > 0) { const interactions = document.createElement("div"); interactions.innerHTML = `<h3>${headerTitle ?? "Interactions"}</h3>`; for (const child of data.children) { const interaction = document.createElement("div"); interaction.innerHTML = ` <p> <strong><a href="${child.author.url}" target="_blank">${child.author.name}</a></strong> <small> - ${new Date(child["wm-received"]).toLocaleString("en-US", { month: "short", day: "numeric", year: "numeric", })}</small> </p> <blockquote>${setContent(child)}</blockquote> `; interactions.appendChild(interaction); } const upvoteForm = document.getElementById("upvote-form"); upvoteForm.parentNode.insertBefore(interactions, upvoteForm.nextSibling); } } fetchInteractions(document.currentScript.getAttribute("data-interactions")); }
主要邏輯位於 fetchInteractions() 函數中,該函數接受一個參數:顯示為所有交互作用的標題的文字。預設情況下,標題文字為“Interactions”,但您可以透過在 <script> 上設定 data-interactions 屬性來自訂它。標籤。 </script>
頂部有一個特定於 Bear 部落格的 if 語句,確保此程式碼僅在包含部落格文章的頁面上運行。
fetchInteractions() 函數使用 document.URL 檢索特定於目前頁面的互動。此處使用的 Webmention API 端點記錄在 Webmention.io 主頁上。
建立一個新的 div 元素(儲存在變數互動中)來保存所有互動。對於檢索到的資料中的每個子元素,將使用單一互動的詳細資訊(儲存在變數互動中)建立單獨的 div。此子資料填入一個 HTML 模板,顯示每次互動的作者、日期和內容。
setContent() 函數有助於根據互動類型格式化內容。目前支援三種類型:回覆(附文字)、按讚和轉發,每種類型根據類型顯示不同的文字。
最後,在 fetchInteractions() 函數中,interactions 元素被插入到 upvote-form 元素的正下方,這也是小熊博客特有的。
就是這樣!透過此設置,您可以輕鬆地在部落格貼文上顯示互動。快樂寫部落格!
以上是在小熊博客上顯示網絡提及互動的分步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在Node.js中發起HTTP請求有三種常用方式:使用內置模塊、axios和node-fetch。 1.使用內置的http/https模塊無需依賴,適合基礎場景,但需手動處理數據拼接和錯誤監聽,例如用https.get()獲取數據或通過.write()發送POST請求;2.axios是基於Promise的第三方庫,語法簡潔且功能強大,支持async/await、自動JSON轉換、攔截器等,推薦用於簡化異步請求操作;3.node-fetch提供類似瀏覽器fetch的風格,基於Promise且語法簡單

JavaScript的數據類型分為原始類型和引用類型。原始類型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時復制副本,因此互不影響;引用類型如對象、數組和函數存儲的是內存地址,指向同一對象的變量會相互影響。判斷類型可用typeof和instanceof,但需注意typeofnull的歷史問題。理解這兩類差異有助於編寫更穩定可靠的代碼。

JavaScript中filter()方法用於創建一個包含所有通過測試元素的新數組。 1.filter()不修改原數組,而是返回符合條件元素的新數組;2.基本語法為array.filter((element)=>{returncondition;});3.可按屬性值過濾對像數組,如篩選年齡大於30的用戶;4.支持多條件篩選,例如同時滿足年齡和名字長度條件;5.可處理動態條件,將篩選參數傳入函數以實現靈活過濾;6.使用時注意必須返回布爾值,避免返回空數組,以及結合其他方法實現字符串匹配等複雜邏

在JavaScript中檢查數組是否包含某個值,最常用方法是includes(),它返回布爾值,語法為array.includes(valueToFind),例如fruits.includes('banana')返回true;若需兼容舊環境,則使用indexOf(),如numbers.indexOf(20)!==-1返回true;對於對像或複雜數據,應使用some()方法進行深度比較,如users.some(user=>user.id===1)返回true。

處理異步函數中的錯誤應使用try/catch、在調用鏈中處理、使用.catch()方法、並監聽unhandledrejection事件。 1.使用try/catch捕獲錯誤是推薦方式,結構清晰且能處理await中的異常;2.在調用鏈中處理錯誤可集中邏輯,適合多步驟流程;3.使用.catch()可在調用async函數後捕獲錯誤,適用於Promise組合場景;4.監聽unhandledrejection事件可記錄未處理的rejection,作為最後一道防線;以上方法共同確保異步錯誤被正確捕獲和處理。

虛擬DOM是一種優化真實DOM更新的編程概念,通過在內存中創建與真實DOM對應的樹形結構,避免頻繁直接操作真實DOM。其核心原理是:1.數據變化時生成新的虛擬DOM;2.對比新舊虛擬DOM找出最小差異;3.批量更新真實DOM以減少重排重繪開銷。此外,使用唯一穩定key可提升列表對比效率,而部分現代框架已採用其他技術替代虛擬DOM。

JavaScript的作用域決定變量可訪問範圍,分為全局、函數和塊級作用域;上下文決定this的指向,依賴函數調用方式。 1.作用域包括全局作用域(任何地方可訪問)、函數作用域(僅函數內有效)、塊級作用域(let和const在{}內有效)。 2.執行上下文包含變量對象、作用域鍊和this的值,this在普通函數指向全局或undefined,在方法調用指向調用對象,在構造函數指向新對象,也可用call/apply/bind顯式指定。 3.閉包是指函數訪問並記住外部作用域變量,常用於封裝和緩存,但可能引發

要獲取HTML輸入框的值,核心是通過DOM操作找到對應元素並讀取value屬性。 1.使用document.getElementById是最直接方式,給input添加id後通過該方法獲取元素並讀取value;2.使用querySelector更靈活,可根據name、class、type等屬性選取元素;3.可添加input或change事件監聽器實現交互功能,如實時獲取輸入內容;4.注意腳本執行時機、拼寫錯誤及null判斷,確保元素存在後再訪問value。
