如何确保特定节点已加载并可用于javascript/jquery?
在一家酒店内,我试图通过使用cjs chrome扩展注入javascript,在加载页面时以及在用户更改日期时获取可用房间和价格。我试着使用$window.onload,function来等待所有资产的加载,但这似乎并没有100%的时间起作用。有时我必须刷新页面几次才能使其正常工作 这是我目前的代码。使用window.onload,我将执行函数grabInfo 我想也许我可以使用$'.thumb-cards\u products.onready,function,等待加载目标元素,但这似乎不起作用如何确保特定节点已加载并可用于javascript/jquery?,javascript,jquery,Javascript,Jquery,在一家酒店内,我试图通过使用cjs chrome扩展注入javascript,在加载页面时以及在用户更改日期时获取可用房间和价格。我试着使用$window.onload,function来等待所有资产的加载,但这似乎并没有100%的时间起作用。有时我必须刷新页面几次才能使其正常工作 这是我目前的代码。使用window.onload,我将执行函数grabInfo 我想也许我可以使用$'.thumb-cards\u products.onready,function,等待加载目标元素,但这似乎不起作
虽然window.onready可以工作,但它与$'.thumb-cards_products.onready不一致,该函数根本不起作用。最后,我尝试专门从窗口获取数据。_globalTracking.AvailableRooms,它很可能是从异步api调用返回的。尝试设置轮询所需内容的间隔,一旦可用,就可以运行函数
function callback() {
if ($('myElement').length) {
clearInterval(token);
grabInfo();
let targetNodes = $('.thumb-cards_products');
let myObserver = new MutationObserver(mutationHandler);
let obsConfig = {
childList: true,
characterData: true,
attributes: true,
subtree: true
};
myObserver.observe(targetNodes[0], obsConfig);
}
const token = window.setInterval(callback, 200);
当页面准备就绪时触发window.onready事件,该事件与卡信息加载无关,由于卡是通过javascript代码异步加载的。@GramThanos让侦听器等待卡元素可用对我来说有意义吗?还是有更好的方法等待实际api返回所需的信息?没有这样的事件。按照Daron Spaulding的回答。
function callback() {
if ($('myElement').length) {
clearInterval(token);
grabInfo();
let targetNodes = $('.thumb-cards_products');
let myObserver = new MutationObserver(mutationHandler);
let obsConfig = {
childList: true,
characterData: true,
attributes: true,
subtree: true
};
myObserver.observe(targetNodes[0], obsConfig);
}
const token = window.setInterval(callback, 200);