亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

瀏覽器擴展:如何在加載元素時執行函數

瀏覽器擴展:如何在加載元素時執行函數

料青山看我應如是 2023-09-07 18:25:12
我正在開發瀏覽器擴展。它有兩個部分:彈出窗口 - 包含復選框內容腳本 - 包含更改 CSS 屬性的代碼我正在保存復選框的狀態,以便下次再次打開彈出窗口時,相同的復選框會被標記為已選中。當我使用復選框時,它們會按預期更改 DOM,但是當我嘗試在頁面加載后更改 DOM 時,更改不會反映出來。這可能是因為我想要執行操作的元素加載緩慢,因此所需的操作失敗。我嘗試使用 onload 和 ready 但沒有任何效果$('.question-list-table').on('load', function() {     browser.storage.local.get(["options"], modifyThenApplyChanges) });我也嘗試過,但沒有任何改變。$('body').on('load','.question-list-table', function() {     browser.storage.local.get(["options"], modifyThenApplyChanges) });此外,當我在 Google Chrome 和 Mozilla Firefox 中進行測試時,彈出窗口或內容腳本沒有明顯的錯誤。更新:正如之前所懷疑的,目標元素加載緩慢,因此我使用了setTimeout腳本5 seconds,并且腳本按預期工作。加載時間是可變的,我想盡早以一致的方式展示我的更改。
查看完整描述

1 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

這就是我編寫的代碼并且對我有用


// Mutation Observer

const observer = new MutationObserver(function (mutations) {

? ? mutations.forEach(function(mutation) {

? ? ? ? if(mutation.addedNodes.length) {

? ? ? ? ? ?//do stuff

? ? ? ? }

? ? });

});


el = document.getElementsById('elementId');

if(el) {

? ? observer.observe(el, {

? ? ? ? childList: true // specify the kind of change you are looking for

? ? });

}


查看完整回答
反對 回復 2023-09-07
  • 1 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號