2011-06-23 19 views
17

Deseo controlar el evento click en un iframe con un controlador que obtiene la id iframe como parámetro.Agregar controlador de eventos de clic al iframe

soy capaz de agregar un controlador de eventos a través de JavaScript onClick de la siguiente manera y funciona bien:

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

Pero en este caso yo soy incapaz de pasar un parámetro a clic(). Traté de imprimir this.id en clic() pero sin resultado.

onClick El atributo HTML no funciona en absoluto, no se llama al controlador.

<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

como han comentado en [Deepi] (http : //stackoverflow.com/users/787076/deepi) en una respuesta: 'su código (lo que dio en la parte superior) funciona bien. Pero funciona cuando hace clic exactamente en el borde, no en el cuadro lateral' –

Respuesta

10

puede usar cierres para pasar parámetros:

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

Sin embargo, recomiendo que utilice una mejor approac h para acceder a su marco (que sólo puedo suponer que está utilizando la forma DOM0 de acceder a las ventanas de marcos por su nombre - algo que sólo se mantiene en torno a la compatibilidad hacia atrás):

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

gracias wladimir .... resolvió la mitad de mi problema ... pero aún así, este no está funcionando. si paso "hello world", se imprime, pero para esto, dice "undefinied" en el cuadro de alerta: S – samach

+0

Correcto, eso se debe a que agregó el oyente al documento y el documento no tiene una ID. Probablemente desee agregarlo al elemento '