這是我第一次嘗試學習 Firefox 擴展開發。首先,我正在嘗試做一個簡單的擴展來改變 youtube.com 主頁的某些部分。
這是manifest.json
:
{
"manifest_version": 2,
"name": "Better Youtube jk idk what I'm doing",
"version": "1.0",
"description": "Yep yep yippie",
"content_scripts": [
{
"matches": ["*://*.youtube.com/*"],
"js": ["better_youtube.js"]
}
]
}
這是better_youtube.js
檔案:
document.getElementsByClassName("title style-scope ytd-guide-entry-renderer")[0].textContent = "something";
因此,它獲得的元素是頁面左側選單上的“主頁”鏈接。我寫這篇文章的原因是我有一個不尋常的行為:
- 如果我加載已啟用擴展程式的 youtube.com 頁面,則不會發生任何事情,并且鏈接的文本不會更改
- 如果已經加載了 youtube.com,我從
about:debugging
頁面重新加載腳本,它可以作業
我嘗試在 10 秒后運行更改(通過將代碼傳遞給setTimeout(changeLabel, 10000)
呼叫),但它一直顯示這種奇怪的行為。
如果有任何用處,我正在運行 Firefox 99.0.1
謝謝你的幫助。
編輯:我將代碼更改為
setTimeout(delayedUpdate, 10000);
function delayedUpdate(event)
{
document.getElementsByClassName("title style-scope ytd-guide-entry-renderer")[0].innerHTML = "something";
}
現在它可以作業了,但我每次都必須等待 10 秒才能加載,而且感覺很慢。通過控制臺日志記錄,我注意到當我仍然看到部分頁面丟失時,Firefox“認為”頁面已加載,問題可能源于此,但我不知道如何解決它。也許我的擴展與 youtube 頁面上運行的某些腳本沖突?
uj5u.com熱心網友回復:
感謝@wOxxOm,我找到了解決方案:我可以收聽一些 YouTube 特定的事件,document
并且可以MutationObserver
在頁面上的內容更新時使用。
更多資訊在這里。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/469228.html
標籤:javascript dom 火狐插件 firefox-addon-webextensions
下一篇:根據當前物件顯示和隱藏組件