添加 dom 元素时如何 运行 编码 firefox 扩展
How to run code when a dom element is added firefox extensions
我正在做一个扩展来编辑页面上的元素,但它只有在加载时元素在页面上时才有效(使用它的网站永远不会发生)所以我想得到一个事件如果显示 ID 为“427”的 div。
代码:
var card = !!document.getElementById(427);
console.log(card);
if (card = true) {
var card = document.getElementById(427)
var cardimg = card.children.item(9)
cardimg.setAttribute("style", 'background: transparent url("images/cards/Ultimate_Recipe.png") no-repeat scroll 0% 0%;')
};
你可以使用MutationObserver,但你应该小心内存使用:
const onMutation = () => {
const element = document.getElementById(427)
if (element) {
observer.disconnect()
elementIsReady(element)
}
}
const observer = new MutationObserver(onMutation)
observer.observe(document.body, {childList: true, subtree: true})
您也可以使用 Promise,通过查询每个 x 毫秒:
new Promise(async (resolve) => {
let element
while (!(element = document.getElementById(427))) await new Promise(r => setTimeout(r, 200))
resolve(element)
}).then(elementIsReady)
我正在做一个扩展来编辑页面上的元素,但它只有在加载时元素在页面上时才有效(使用它的网站永远不会发生)所以我想得到一个事件如果显示 ID 为“427”的 div。
代码:
var card = !!document.getElementById(427);
console.log(card);
if (card = true) {
var card = document.getElementById(427)
var cardimg = card.children.item(9)
cardimg.setAttribute("style", 'background: transparent url("images/cards/Ultimate_Recipe.png") no-repeat scroll 0% 0%;')
};
你可以使用MutationObserver,但你应该小心内存使用:
const onMutation = () => {
const element = document.getElementById(427)
if (element) {
observer.disconnect()
elementIsReady(element)
}
}
const observer = new MutationObserver(onMutation)
observer.observe(document.body, {childList: true, subtree: true})
您也可以使用 Promise,通过查询每个 x 毫秒:
new Promise(async (resolve) => {
let element
while (!(element = document.getElementById(427))) await new Promise(r => setTimeout(r, 200))
resolve(element)
}).then(elementIsReady)