window.document.addEventListener行为不一致且出现错误(JS)

时间:2017-05-30 13:13:14

标签: javascript

我的脚本接受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();
    } 

谢谢你看看。

1 个答案:

答案 0 :(得分:0)

您需要传递对函数的引用,而不是直接调用它:

element.document.addEventListener("DOMContentLoaded",getSomething,false);