2014-10-22 61 views
1

我目前正在計算我的應用程序中打開的選項卡數量。但我的問題是,似乎我的腳本不會檢測onload事件。這是我的代碼。 我正在使用HTML5網絡存儲和原生js。我沒有使用jQuery來了解更多關於本地js的知識。無法檢測窗口是否加載

(function(w) { 
    function Tabz(win, key) { 
     this.name = ''; 
     this.storageKey = key; 
     if(win.name != '') 
      this.name = win.name; 
     else { 
      var windowArr = JSON.parse(localStorage.getItem(key)) || []; 
      this.name = "tabz_"+ windowArr.length; 
      win.name = this.name; 
      windowArr.push(this.name); 
      localStorage.setItem(this.storageKey, JSON.stringify(windowArr)); 
     } 
    } 

    Tabz.prototype.getStorage = function() { 
      return localStorage.getItem(this.storageKey); 
    } 

    Tabz.prototype.removeWindow = function() { 
      //remove window function here 
    } 

    var newWindow = new Tabz(w, 'counter'); 
    window.load = function() { 
     var count = JSON.parse(newWindow.getStorage()).length; 
     alert(count!); // this wont execute so that I can check the count. 
    } 

    })(window); 
+0

可能是因爲負載甚至發生在您的函數執行之前。既然這整件事情都是在頁面加載的時候執行的,爲什麼不刪除「window.load = function(){}」,並將警報計數放在主函數中。 – frenchie 2014-10-22 03:05:59

回答

4

你的問題是在這條線:

window.load = function() { 

這會load屬性添加到窗口,而不是添加事件偵聽器。我認爲你正在尋找onload

window.onload = function() { 

順便說一句,使用事件屬性被認爲是不好的做法。使用addEventListener會更好。

window.addEventListener("load", function(){ 
    //Do stuff... 
}); 
+0

我認爲onload事件在他的代碼運行時已經過去了。 – frenchie 2014-10-22 03:07:29

+0

謝謝我應該使用onload而不是加載,現在它正在工作。 – loki9 2014-10-22 03:09:02

+0

@frenchie:這隻會發生,如果他加載後的一切其他負載腳本,似乎並非如此。 – 2014-10-22 03:10:26