我正在学习有关DOM操作的知识,并且为了练习,我试图吸引前100名对#Javascript感兴趣的Twitter用户(请参阅链接)。由于到目前为止,Twitter不允许您在浏览器控制台中使用Glide.with(context) .load(imgurl)
.apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.RESOURCE)
.error(R.drawable.no_image)) .into(holder.imageView);
功能,因此我设法在HTML中以可视方式显示任何字符串,在这种情况下,是在搜索文本框下方。
这是我的“自定义” console.log()
console.log()
要获取用户名,我会每4秒不断滚动页面并查找用户名,直到function consoleLog(data) {
var searchTextBox = document.querySelector("#doc > div.topbar.js-topbar > div > div > div > div > div");
var p = document.createElement("p");
var innerText = document.createTextNode(data);
p.appendChild(innerText);
searchTextBox.appendChild(p);
}
变量中包含100个或更多用户名为止。
usernames
问题是var scrollPage = setInterval(function() {
window.scrollTo(0, document.body.scrollHeight);
}, 4000);
var usernames = [];
while (true) { // <------ PROBLEM
if (usernames.length < 100) {
consoleLog("Getting usernames again");
usernames = getUsernames();
}
else {
consoleLog("We have ENOUGH usernames. BREAK");
clearInterval(scrollPage);
printUsernames();
break;
}
}
function printUsernames() {
for(var user of usernames) {
consoleLog(user);
}
}
function getUsernames() {
var results = [];
var usernameNodes = document.getElementsByClassName("username u-dir u-textTruncate");
var username = usernameNodes[0].textContent;
for(var node of usernameNodes) {
results.push(node.textContent);
}
return results.filter(isUnique);
}
function isUnique(value, index, self) {
return self.indexOf(value) === index;
}
循环进入了无限循环,我不知道为什么。我认为代码的逻辑是正确的。实际上,如果我首先将所有已声明的函数复制并粘贴到浏览器控制台,然后启动while
间隔,最后启动while循环,则效果很好。当我一次将所有代码复制并粘贴到浏览器控制台中时,就会出现问题。就像间隔的执行和while循环以某种方式发生冲突一样。但是我听不懂。
答案 0 :(得分:0)
最好像这样进行调节:
var usernames = [];
// This will automatically end when length is greater or equall 100
// no need to break
while (usernames.length < 100) {
consoleLog("Getting usernames again");
usernames = getUsernames();
}
consoleLog("We have ENOUGH usernames.");
clearInterval(scrollPage);
printUsernames();