我正在开发一个chrome扩展,它可以点击网站上的元素,但其中一些元素会在稍后出现,并且代码不起作用,因此我需要让函数等待所选元素加载。而不是像on那样在几秒钟内延迟等待 setTimeout 功能。我怎么做?
setTimeout
uujelgoq1#
可以使用mutationobserver执行以下操作:
function handleSomeDiv(someDiv) { console.log("div was handled"); } const observer = new MutationObserver(function (mutations, mutationInstance) { const someDiv = document.getElementById('some-div'); if (someDiv) { handleSomeDiv(someDiv); mutationInstance.disconnect(); } }); observer.observe(document, { childList: true, subtree: true });
axr492tv2#
let element = document.getElementById('elementId') while (element === null) { console.log('Waiting for element') element = document.getElementById('elementId') } // Perform operation with element
jm81lzqq3#
有两种方法可以做到这一点:
html:
<p id="pElement">Hello</p>
javascript:
window.onload = () => { document.getElementById("pElement").innerHTML+=", world!" }
document.addEventListener('load',()=>{ document.getElementById("pElement").innerHTML += ", world!"; });;
a5g8bdjr4#
你可以试试 setInterval 此方法将一直在页面中工作,当您的条件为真时,它将执行此方法,但使用时要小心-因为此方法将一直在页面中工作,所以您需要添加条件以仅执行一次例子
setInterval
var check = false; setInterval(function () { if(document.getElementById("id") !== null && check === false) { document.getElementById("id").click(); check = true; } }, 1000)
这将是每秒钟检查一次,当您的条件为真时,它将只执行一次如果您删除了检查条件,它将每秒执行此代码
4条答案
按热度按时间uujelgoq1#
可以使用mutationobserver执行以下操作:
axr492tv2#
jm81lzqq3#
有两种方法可以做到这一点:
window.onload:
html:
javascript:
document.addeventlistener(“加载”)
html:
javascript:
a5g8bdjr4#
你可以试试
setInterval
此方法将一直在页面中工作,当您的条件为真时,它将执行此方法,但使用时要小心-因为此方法将一直在页面中工作,所以您需要添加条件以仅执行一次例子
这将是每秒钟检查一次,当您的条件为真时,它将只执行一次
如果您删除了检查条件,它将每秒执行此代码