我正在尝试创建一个Chrome扩展程序,只需单击一个按钮即可打开我经常访问的几个网页。目前点击时,它会打开我想要的4个网页中的1-4个网页,通常会过早停止。代码非常简单,所以我认为这是一个处理问题。出于这个原因,我想介绍一些延迟。我被告知不要使用我发现的研究中的sleep(),所以我试图实现代码,使得我的For循环等到页面加载后继续进行。这是代码:
function OpenInNewTabWinBrowser(url) {
var win = window.open(url, '_blank');
//win.focus();
}
function CheckLoading() {
return document.readyState === "interactive";
}
var websites = ['https://reddit.com', 'https://xkcd.com', 'http://poorlydrawnlines.com', 'https://explosm.net'];
var MoveAlong;
for (var i = websites.length - 1; i >= 0; i--) {
OpenInNewTabWinBrowser(websites[i]);
console.log("Just opened a window!");
MoveAlong = CheckLoading();
console.log("Just checked if it was loading!");
/*while (MoveAlong == false) {
console.log("Just realized it hasn't loaded all the way!");
sleep(10);
console.log("Just woke up!");
MoveAlong = CheckLoading();
console.log("Just double checked if it had loaded!")
}
console.log("Just broke out of the while loop!")*/
}
console.log("Just finished doing everything you asked master!")
当我按原样运行代码时,我并不总是打开每一页。评论部分是我试图用作暂停功能的部分,但是当该代码未被注释时,它只打开一个页面,而不再是。我也尝试提供console.log注释进行调试,但是当我检查弹出窗口时,即使一个窗口打开,控制台也会关闭,我无法读取代码出错的地方。
我也试过这个循环和函数来检查加载的页面然后取消暂停。此代码从上面的代码段替换了For循环。它也无法正常工作。
var i = websites.length - 1;
do {
MoveAlong = false;
OpenInNewTabWinBrowser(websites[i]);
i--;
window.onload = function() {
MoveAlong = true;
}
}
while (MoveAlong == true && i >= 0);
非常感谢任何帮助。关于如何正确调试,如何检测网站是否正在加载,如何使此扩展工作。我已经有一段时间潜伏了,但现在我每天都在积极地编码。这是我的第一篇文章,希望它将成为一个有趣的爱好的开始。再次感谢你。