0) { for (-6ren">
gpt4 book ai didi

javascript - 如何在 chrome 控制台中保留该功能并在重新加载页面后运行它?

转载 作者:行者123 更新时间:2023-11-30 14:31:09 25 4
gpt4 key购买 nike

我有一个代码想放入 chrome 控制台

var a = document.getElementsByClassName("dispo");
if (a.length > 0) {
for (let i = 0; i < a.length ; i++) {
if (a[i].textContent.length > 0) {
console.log(a[i].parentElement.textContent.substr(0,10) + " - " + a[i].textContent);
}
}
} else {
setInterval(function(){ document.location.reload() },60000);
}

上面的函数从网站上获取一些数据,但如果它没有找到数据,我希望它每分钟重新加载一次,直到数据可用。
我只想插入一次代码并让浏览器继续工作。
那么如何在每次重新加载页面时运行该函数?

最佳答案

您可以将代码更改为不每次都重新加载页面,而是通过 XMLHttpRequest 请求它.然后,您可以使用 DOMParser 将响应解析为文档:

function request(callback) {                            // request will request the page content as text (without reloading)
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://your-url-here");
xhr.onload = function() {
callback(xhr.response);
};
xhr.send();
}

function next() { // next will be called each time instead of reloading
request(function(response) { // first we request the page
var doc = new DOMParser().parseFromString(response, "text/html"); // then we parse it as a document

var a = doc.getElementsByClassName("dispo"); // use doc instead of document (doc will be the newly requested document/page)
if (a.length > 0) {
for (let i = 0; i < a.length ; i++) {
if (a[i].textContent.length > 0) {
console.log(a[i].parentElement.textContent.substr(0,10) + " - " + a[i].textContent);
}
}
} else {
setTimeout(next, 60000); // if we didn't find anything, then call next after a minute
}
});
}

next();

注意事项:

  1. 首先确保您当前位于该页面上,这样您就不会收到 CORS 错误。
  2. 如果 url 有参数,你应该发送那些 as a form .

关于javascript - 如何在 chrome 控制台中保留该功能并在重新加载页面后运行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com