在Chrome扩展中,在executeScript
函数我点击按钮,这个按钮渲染与ajax的内容,我想等内容加载,然后点击另一个按钮: 在background.js脚本我有:铬扩展执行脚本等待阿贾克斯响应完成
chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
chrome.tabs.update(tabs[0].id, {url: tabs[0].url}, function() {
chrome.tabs.executeScript({
file: "scriptInjection.js"
}, function (output) {
if (output == 'test1') {
sendData (output);
//clearStorage();
} else if (output == 'test2') {
sendData (output);
clearStorage();
}
});
});
});
我尝试了很多东西在scriptInjection.js
为exmple我创建了一个暂停功能是这样的: 在scriptInjection.js
文件我有:
function pause(milliseconds) {
let dt = new Date();
while ((new Date()) - dt <= milliseconds) {
}
}
if (document.URL == "...") {
all = document.querySelectorAll('span.fc-title');
for (let i = 0; i < all.length; i++) {
if (all[i].innerText == 'company') {
all[i].click();
var result = true;
break;
}
}
if (result === true) {
pause(2000);
reserve();
output = 'test1';
} else {
document.querySelector("#calendar > div.fc-toolbar > div.fc-right > div > button.fc-next-button.fc-button.fc-state-default.fc-corner-right > span").click();
all = document.querySelectorAll('span.fc-title');
for (let i = 0; i < all.length; i++) {
if (all[i].innerText == 'company') {
all[i].click();
var result = true;
break;
}
}
if (result === true) {
pause(2000);
reserve();
output = 'test1';
}
}
}
但以这种方式,脚本剂量不会等到ajax内容加载,我使用setInterval保留功能,但它仍然无法工作。 我使用MutationObserver在scriptInjection.js
文件中像这样在scriptInjection.js
的起点,但它没有作用:
var observer = new MutationObserver(function() {
reserve();
});
observer.observe(document.documentElement, {attributes: true, childList: true, characterData: true});
和储备功能:
function reserve(){
let Shifts = document.getElementsByName("shifts");
if (Shifts.length !== 0) {
for (let i = 0; i < Shifts.length; i++) {
Shifts[i].click();
break;
}
document.querySelector("#Btn").click();
}
}
我看到这个链接使用突变观察员“fjaguero.com/blog/using-mutationobservers-to-build-a-simple-extension/” 但我不知道在哪里放置突变观察者Chrome扩展程序我应该使用它的内容脚本或执行脚本文件?
TNX对GitHub上的帮助和回答这个问题,我使用chrome.tabs.query在background.js文件和setInterval的函数,该函数的功能,例如运行在30秒排在刷新页面,然后点击按钮和...但我不知道如何刷新内容脚本文件中的页面,所以我使用executeScript功能,问题是如何等待脚本点击后加载ajax的内容按钮 –
感谢@fjaguero,通过在内容脚本中使用突变观测器设计和消除EXCUTE脚本函数解决的缘由叫回调肯定执行脚本和变异观察员后,问题关闭 –
仅供参考,[这](https://github.com/fjaguero/twitter-answers-counter/issues/1)是我用突变观察者的例子发布了另一个扩展版本的地方 – fjaguero