2014-09-05 45 views
0

我需要偵聽某個事件(如果它當然存在),以知道何時將新屬性添加到window對象。那可能嗎?將新屬性添加到窗口對象時獲得通知 - js

例如:

我在應用程序中的代碼,不知道是什麼全局變量一些庫公開(例如underscore.js暴露出全球_,而不是underscore)。我需要被通知新的財產被分配到window

回答

1

有兩種方法可以嘗試做到這一點,但都不是一個好的選擇。

  1. 您可以檢查使用setInterval更改window對象。這將會很慢,並且在將一個新的房產添加到window以及您的代碼將注意到它之間會有延遲。下面是一些代碼,說明這樣做的一個方式:http://jsbin.com/vubew/1/edit?js,console

    (function(){ 
        'use strict'; 
        var keys = Object.keys(window).join(); 
    
        setInterval(function(){ 
        var newKeys = Object.keys(window).join(); 
    
        if (newKeys !== keys) { 
         console.log('`window` changed'); 
         keys = newKeys; 
        } 
        }, 100); 
    
    })(); 
    
  2. 你可以使用ES7的Object.observe方法。不幸的是,現在只有Chrome支持它(位於試驗旗後面)。

一旦您確定這些方法之一發生了變化,您將生成一個代碼將監聽的事件。