Foros del Web » Programando para Internet » Javascript »

Como asignar eventos y capturar eventos ...

Estas en el tema de Como asignar eventos y capturar eventos ... en el foro de Javascript en Foros del Web. Pues eso ... como se puede asignar eventos a un determinado elemento de la pagina? y como los puedo capturar? esque lo estoy intentando pero ...
  #1 (permalink)  
Antiguo 04/05/2004, 07:05
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
Como asignar eventos y capturar eventos ...

Pues eso ... como se puede asignar eventos a un determinado elemento de la pagina? y como los puedo capturar? esque lo estoy intentando pero no hay manera ....
__________________
Usuario registrado de Linux #288725
  #2 (permalink)  
Antiguo 04/05/2004, 07:29
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
Tengo un problema. ahora cuando detecto que el boton derecho se a pulsado .... como puedo evitar que salga el menu contextual .....

tengo este codigo:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>

<body>
<div id="area">
<script type="text/javascript">

var area = document.getElementById('area');
var iframe = document.createElement("iframe");
iframe.className    = "iframe";
iframe.style.width  = "400";
iframe.style.height = "400";

function init() {
	var doc = iframe.contentWindow.document;
	doc.designMode = "on";
}
setTimeout(init, 100);

area.appendChild(iframe);

function load() {
	iframe.contentWindow.document.addEventListener("click", get, false);
}

function get(e) {
	if(e.which == 3) {
		alert("Boton derecho");
	}
}

window.onload = load;
</script>
</div>
</body>
</html>
Solo funciona bajo Mozilla .... pero bueno, el caso es como eliminar el menu contextual jeje
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 04/05/2004, 13:19
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola epplestun:

Explorer tiene sus propios métodos attachEvent para capturar y detachEvent para remover, solo tiene 2 parámetros el evento (con "on" por delante, y la función que llama)...

document.body.attachEvent("onclick", saludo);
Siendo saludo una función...

Aquí tienes un tutorial buenod: http://kusor.net/traducciones/brainj...vents1.es.html
Yo tengo el mismo pero en un documento pdf que no sé de donde lo saqué, pero es lo mismo.

En el inspector DOM de mi página: http://www.pepemolina.com/DOM/index.html
Desarrollé para los dos navegadores, comunicándose entre frames, tal vez tengas problemas en las definiciones de las funciones.

Saludos
  #4 (permalink)  
Antiguo 04/05/2004, 13:47
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
ummmm nose esque lo he intentado pero no funciona
__________________
Usuario registrado de Linux #288725
  #5 (permalink)  
Antiguo 04/05/2004, 15:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola otra vez :

No sé si es que hay algún problema de seguridad, pero revisé el inspector y no tengo desarrollada esa etiqueta, y te puedo asegurar que me eché mucho tiempo con esta página... seguramente después de no obtener resultados por enésima vez, haya decidido dejarlo por imposible...

Recuerdo que respondí otra pregunta para poner un fondo en un iframe desde la página padre, y he podido generando la página con javascript... ya sabes:
with (window.frames[el_frame].document) {
clear();
open();
write("<html>...</html>");
close();
}

y luego poner
window.frames[el_frame].document.body.style...
y funcionarme bien, pero con páginas cargadas desde URL's no querer funcionar.

... Si encuentras una solución que funcione no dudes en avisar...

Saludos
  #6 (permalink)  
Antiguo 05/05/2004, 00:54
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
Buenas, esto me funciona perfectamente:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>

<body>
<script>
var e = document.body;
var evento = "click";

alert(e);

if(document.all) {
	e.attachEvent("on" + evento, openMenu);
} else {
	e.addEventListener(evento, openMenu, false);
}

function openMenu(event) {
	alert("Click");
	return false;
}
</script>
</body>
</html>
Eso funciona perfectamente sobre la etiqueta BODY del codumento, pero si intento hacerlo con el body de un iframe no hay manera

Por que puede ser?

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>

<body>
<div id="area">
<script type="text/javascript">
document.oncontextmenu = function() {
	alert("Boton derecho en el documento");
	return false;
}

var area     = document.getElementById('area');
var iframe   = document.createElement("iframe");
iframe.setAttribute('id','iframe');
iframe.style.width  = "400";
iframe.style.height = "400";

function init() {
	var doc = iframe.contentWindow.document;
	doc.designMode = "on";
}
setTimeout(init, 100);

area.appendChild(iframe);

with(document.getElementById('iframe').contentWindow.document) {
	clear();
	open();
	write("<html><body></body></html>");
	close();
}

var e = document.getElementById('iframe').contentWindow.document.body;
var evento = "click";

//alert(e);

if(document.all) {
	e.attachEvent("on" + evento, openMenu);
} else {
	e.addEventListener(evento, openMenu, false);
}

function openMenu(event) {
	alert("Click");
	return false;
}
</script>
</div>
</body>
</html>
Alguna idea?¿
__________________
Usuario registrado de Linux #288725
  #7 (permalink)  
Antiguo 05/05/2004, 01:12
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
Si tengo el desingMode activado en el iframe no consigo activarle eventos, si no esta activo si funciona
__________________
Usuario registrado de Linux #288725
  #8 (permalink)  
Antiguo 05/05/2004, 01:30
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola otra vez:

Estube mirando los atributos de explorer y parece que contentWindow no lo admite, en cambio parece que la manera de acceder a los datod de un iframe es mediante frameElement

Pero aún no sé hacer modificaciones.

Saludos
  #9 (permalink)  
Antiguo 05/05/2004, 02:59
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
Bueno .... algo e conseguido hacer .... es decir, añadirle el evento pero bueno es una chapucilla:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>

<body>
<div id="menu" style="position: absolute; width: 150px; height: 300px; visibility: hidden; background-color: #f2f2f2" onMouseOut="this.style.visibility='hidden'"></div>
<div id="area">
<script type="text/javascript">
document.oncontextmenu = function() {
	alert("Boton derecho en el documento");
	return false;
}

var area     = document.getElementById('area');
var iframe   = document.createElement("iframe");
iframe.setAttribute('id','iframe');
iframe.style.width  = "400";
iframe.style.height = "400";

function init() {
	var doc = iframe.contentWindow.document;
	doc.designMode = "on";
}
setTimeout(init, 100);

area.appendChild(iframe);

with(document.getElementById('iframe').contentWindow.document) {
	clear();
	open();
	write("<html><body></body></html>");
	close();
}

var e = document.getElementById('iframe').contentWindow.document;
var evento = "click";

//alert(e);
var doc = self.document.getElementById('iframe').contentWindow;
_addEvent(doc, "contextmenu", function () { document.getElementById('menu').style.visibility="visible"; alert(); return false;});


function _addEvent(el, ev, func) {
	if(document.all) {
		el.attachEvent("on" + ev, func);
	} else {
		el.addEventListener(ev, func, true);
	}
}
</script>
</div>
</body>
</html>
El problema es que solo funciona bajo Mozilla
__________________
Usuario registrado de Linux #288725
  #10 (permalink)  
Antiguo 05/05/2004, 04:47
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
Asi a quedado

Pues jeje el efecto lo hace



Jejeje ahora toca trabajar con las selecciones eso si es mas dificil jajaja
__________________
Usuario registrado de Linux #288725
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:24.