2 回答

TA貢獻1844條經驗 獲得超8個贊
您可以使用 MutationObserver 來監視頁面上 DOM 的更改。
如果您需要與舊版瀏覽器保持兼容,請使用單擊事件來觸發您自己的手動觀察器。就像是:
var interval_id = false;
function lookForPopup(){
? ? if(interval_id){
? ? ? ? clearInterval(interval_id);
? ? }else{
? ? ? ? interval_id = setInterval(function(){
? ? ? ? ? ? var popup = document.getElementById('some-id');
? ? ? ? ? ? if(popup){
? ? ? ? ? ? ? ? // do something
? ? ? ? ? ? ? ? clearInterval(interval_id);
? ? ? ? ? ? }
? ? ? ? },1000);
? ? }
}

TA貢獻1851條經驗 獲得超4個贊
我如何使用MutationObserver解決此問題。
MutationObserver has an ability to watch for changes being made to the DOM tree.
I mention the code below how it fixed my issue/requirement.
// selecting the href by id and triggering a click event.
let hrefDoc = document.getElementById("ember");
divDoc.click();
let m = new MutationObserver(() => {
let divDoc = document.getElementById("ember");
new MutationObserver( () => {
// Finally Extracting the required data
console.log(document.getElementById("pv-contact-info").innerText);
}
}).observe(divDoc || document,observerOptions);
});
m.observe(hrefDoc,observerOptions);
正如您在上面看到的,我添加了另一個子 MutationObserver 來觀察 divDoc 元素。這是因為當 hrefDoc 點擊事件時,父級 MutationObserver 回調會通過一些觀察者選項被調用。但在這種情況下,我無法獲取我的 <div id="ember"> 突變節點。
這就是我添加另一個此語句let divDoc = document.getElementById("ember");并在子級中等待此 targetNode MutationObserver的原因。最后我從這個標簽中提取了數據<h1 id="pv-contact-info">
- 2 回答
- 0 關注
- 191 瀏覽
添加回答
舉報