2013-05-15 32 views
3

請參閱下小提琴:http://jsfiddle.net/calvintennant/jBh3A/傳遞的console.log爲收聽事件

我想用console.log作爲一個事件偵聽器:

badButton.addEventListener('click', console.log); 

如小提琴證實,這將導致在一個錯誤。

我明白如何規避錯誤(通過在另一個函數中包裝console.log)。我想知道的是爲什麼發生錯誤。是否有一些安全功能阻止以這種方式使用本地功能?

+1

請在您的問題中包括相關的代碼。 –

+1

您正在測試哪個瀏覽器?我猜Chrome是因爲我在Chrome中遇到錯誤。但它適用於IE9,並在Firefox中靜靜地失敗。 – Spudley

回答

7

這是因爲在log函數中,this必須是控制檯(取決於實現)。如果你直接把它作爲事件處理程序,this是,你可以通過嘗試

goodButton.addEventListener('click', function(e) { console.log(this);}); 

另一種解決方案比你創建一個函數進行包裝,看到小部件是通過console.log.bind(console)(但如果你想成爲兼容與IE8):

goodButton.addEventListener('click', console.log.bind(console));