2011-06-23 90 views
17

我想用iframe的ID作爲參數處理iframe上的click事件。將點擊事件處理函數添加到iframe

我能夠通過JavaScript如下添加onClick事件處理程序,它工作正常:

iframe.document.addEventListener('click', clic, false); 

但在這種情況下,我無法參數傳遞給clic()。我試圖在clic()中打印this.id,但沒有結果。

onClick HTML屬性根本不起作用,處理程序未被調用。

<html> 
<head> 
<script type="text/javascript"> 
function def() { 
    myFrame.document.designMode = 'on'; 
} 
function clic(id) { 
    alert(id); 
} 
</script> 
</head> 
<body onLoad="def()"> 
<iframe id="myFrame" border="0" onClick="clic(this.id)"></iframe> 
</body></html> 
+0

作爲評論[深](http ://stackoverflow.com/users/787076/deepi)在一個答案中:'你的代碼(你在頂部給出的)工作正常。但它正在工作,當你點擊完全在邊框而不是在邊框' –

回答

10

您可以使用閉包來傳遞參數:

iframe.document.addEventListener('click', function(event) {clic(this.id);}, false); 

不過,我建議你使用更好的approac (我只能假設你正在使用DOM0的方式訪問框架窗口的名稱 - 這只是爲了向後兼容性):

document.getElementById("myFrame").contentDocument.addEventListener(...); 
+0

感謝wladimir ....你解決了我的一半prblm ...但仍然this.id nt工作。如果我通過了「hello world」,那麼它會被打印,但是對於this.id,它會在警告框中顯示「undefinied」:S – samach

+0

沒錯,這是因爲您將偵聽器添加到文檔中 - 並且文檔沒有ID。您可能想將它添加到'