2012-04-09 40 views
1

在我的項目中我正在用正則表達式解析JavaScript代碼,特別是像document.createElement這樣的動態函數。但我建議把document.createElement換成鉤子。我不理解怎麼辦Dom對象的鉤子是什麼意思

,他們還提供了一個例子:

var f = document.createElement; 
document.createElement = function(tagName){ 
    console.log(tagName); 
    f.apply(document, arguments); 
} 

此代碼跟蹤document.createElement

我無法理解這種情況在我的代碼中使用任何人都可以幫助我

回答

2

該代碼將存儲對原始document.createElement的引用,然後重新指定document.createElement指向一個新函數。

這裏面的新功能,它會記錄的第一個參數,然後調用原始document.createElement()傳遞documentthis價值和傳遞arguments其餘原樣。

這是我如何會短,`文檔中的代碼吧...

(function() { 
    var documentCreateElement = document.createElement; 

    document.createElement = function(tagName) { 
     console.log(tagName); 
     return documentCreateElement.apply(document, arguments); 
    } 

})(); 

如果console.log()可能不可用,您可能需要更改該行...

window.console && console.log && console.log(tagName); 
+0

.createElement'是「自定義的」 – Joseph 2012-04-09 07:46:02

+0

該函數的輸出是什麼,以及如何使用它來跟蹤網頁中的所有document.createElement函數 – user1275375 2012-04-09 07:46:48

+0

@ user1275375在調用'document.createElement()之前, '並且每個呼叫都會記錄第一個參數。 – alex 2012-04-09 07:48:23