2011-06-23 16 views
17

Chcę obsłużyć zdarzenie click na iframe z modułem obsługi, który otrzymuje identyfikator iframe jako parametr.Dodawanie modułu obsługi zdarzeń kliknięcia do iframe

jestem w stanie dodać moduł obsługi zdarzeń poprzez onClick JavaScript w następujący sposób i to działa dobrze:

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

Ale w tym przypadku jestem w stanie przekazać parametr do clic(). Próbowałem wydrukować this.id w clic(), ale bez rezultatu.

onClick Atrybut HTML w ogóle nie działa, program obsługi nie jest wywoływany.

<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

jak komentował [deepi] (http : //stackoverflow.com/users/787076/deepi) w odpowiedzi: 'twój kod (to, co dałeś na górze) działa dobrze. Ale działa, gdy klikniesz dokładnie na granicy, nie w polu bocznym " –

Odpowiedz

10

można użyć zamknięć przekazać parametry:

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

jednak zalecamy używanie lepszego approac h dostęp do ramki (Mogę tylko przypuszczać, że używasz drogę dom0 uzyskiwania dostępu do okna ramki po imieniu - coś, co jest przechowywane tylko dokoła dla wstecznej kompatybilności):

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

dziękuję wladimir ... u rozwiązać połowę mojego prblm ... ale nadal this.id działa. jeśli przekażę "Witaj świecie", to zostanie wydrukowany, ale dla tego.id w polu z ostrzeżeniem jest napisane "nieokreślony": S – samach

+0

Dobrze, to dlatego, że dodałeś słuchacza do dokumentu - a dokument nie ma identyfikatora. Prawdopodobnie chcesz dodać go do elementu '