我的脚本接受CSV输入,并从中找到用户的名字。然后,它会根据用户的名称创建一个URL 从那里,脚本打开用户的URL,收集有关用户的一些数据,并将该信息放入一个数组中以便以后输出。
我的问题在于window.document.addEventListener。具体代码行如下:
element.document.addEventListener( “DOMContentLoaded”,getSomething(),假);
奇怪的行为如下: 通过上面的语句,侦听器触发并且getSomething()代码开始执行。但是,页面未加载。在控制台中,我可以看到页面内容只不过是一个空体。
将“getSomething()”更改为“getSomething”(在addEventListener代码行中)会导致页面最终加载,但是,getSomething函数永远不会被执行(显然addEventListener没有触发。)
以下代码的一些介绍: 变量testURLs是一个包含用户URL的数组。 函数controlOpenWindows()没有完全设置,但其目的是确定窗口何时准备关闭,并且当收集多达四个打开的窗口的数据时,所有四个将关闭,另外四个将打开。四是任意的。有超过900个用户URL,因此在任何时候都只限制开放数量。
关闭先前打开的窗口的功能使调用打开更多窗口。
请注意,您需要登录ID和密码才能打开特定用户页面。所以在这篇文章中将URL传递给你将没有用。我希望你可以在没有具体信息的情况下提供帮助。
function closeOpenedWindow(index){
switch (index) {
case 0:
blnZero=true;
break;
case 1:
blnOne=true;
break;
case 2:
blnTwo=true;
break;
case 3:
blnThree=true;
}
if (blnZero===true && blnOne===true && blnTwo===true && blnThree===true) {
for (p=0; p<4; p++) {
openedWindow[p].close();
count +=1;
controlOpenWindows();
}
}
}
function controlOpenWindows() {
debugger;
testURLs=[];
blnZero=false;
blnOne=true;
blnTwo=true;
blnThree=true;
if (editorProfileURL.length>=4) {
testURLs[0]= editorProfileURL.shift();
testURLs[1] =editorProfileURL.shift();
testURLs[2]=editorProfileURL.shift();
testURLs[3]=editorProfileURL.shift();
} else {
for (n=0; n<editorProfileURL.length; n++) {
testURLs[n]=editorProfileURL[n];
}
}
testURLs.forEach(openWindow);
}
controlOpenWindows();
function openWindow(element1, index1, array1) {
openedWindow[index1]= window.open(element1);
}
function loaded(element, index, array) {
element.document.addEventListener("DOMContentLoaded", getSomething(), false);
}
openedWindow.forEach(loaded);
function getSomething() {
debugger;
var whichPage=this.document.URL;
function whichIndex(element, index, array) {
if (element.document.URL==whichPage) {
return element.document.URL;
}
}
var foundIndex=openedWindow.findIndex(whichIndex);
var reg=/The page you were looking for doesn*/g;
if (openedWindow[0].document.getElementsByClassName("container not-found").length>0) {
if(openedWindow[foundIndex].document.getElementsByClassName("container not-found")[foundIndex].innerHTML.match(reg)) {
closeOpenedWindow(foundIndex);
}
} else {
var firstEdit=openedWindow[foundIndex].document.getElementsByClassName("user-last-edit")[0].innerHTML;
var lastEditDaysAgo=openedWindow[foundIndex].document.getElementsByClassName("transaction-header-time")[0].innerHTML;
var rank=openedWindow[foundIndex].doucment.getElementsByClassName("user-rank")[0].innerHTML;
var editCount=openedWindow[foundIndex].document.getElementsByClassName("user-stats-value")[1].innerHTML;
updatedEditorInfo.push();
updatedEditorInfo.push(firstEdit + ",");
updatedEditorInfo.push(lastEditDaysAgo+ ",");
updatedEdtiorInfo.push(rank + ",");
updatedEditorInfo.push(editoCount + ",");
updatedEditorInfo.push("\n");
console.log(updatedEditorInfo);
alert(updatedEditorInfo);
//closeOpenedWindow();
//controlOpenWindows();
}
closeOpenedWindow(foundIndex);
controlOpenWindows();
}
谢谢你看看。
答案 0 :(得分:0)
您需要传递对函数的引用,而不是直接调用它:
element.document.addEventListener("DOMContentLoaded",getSomething,false);