Webmaster Workers utiliza cookies. Lea nuestra Política de Privacidad para obtener más información. Para eliminar este mensaje, haga clic en el siguiente botón: Acepto el uso de cookies


Desactivación del evento por defecto de un elemento HTML (IE




Hay elementos HTML que tienen por defecto eventos propios. El más característico es el hipervínculo <a>. Como sabemos por defecto al presionar en el mismo se carga otra página en el navegador.


Desde JavaScript podemos detectar mediante el evento click la selección del hipervínculo y hacer alguna actividad. Si queremos que no se dispare la carga de la página debemos hacer:


Si se trata del IE:

window.event.returnValue=false;

Si se trata de un navegador que respeta los estándares:

e.preventDefault();

Siendo e el objeto de tipo event que llega como parámetro a la función.



Para probar su funcionamiento crearemos una página con un hipervínculo, al presionar el mismo capturaremos dicho evento y mediante JavaScript abriremos en otra ventana la página indicada en el hipervínculo.


pagina1.html

<html>
<head>
<title>Problema</title>
<script language="javascript" src="funciones.js" type="text/javascript"></script>
</head>
<body>
<a href="http://www.google.com" id="enlace">google</a>
</body>
</html>

funciones.js

addEvent(window,'load',inicializarEventos,false);

function inicializarEventos()
{
var ob=document.getElementById('enlace');
addEvent(ob,'click',presionEnlace,false);
}

function presionEnlace(e)
{
if (window.event)
{
window.event.returnValue=false;
var url=window.event.srcElement.getAttribute('href');
var ventana=open(url);
}
else
if (e)
{
e.preventDefault();
var url=e.target.getAttribute('href');
var ventana=open(url);
}
}

function addEvent(elemento,nomevento,funcion,captura)
{
if (elemento.attachEvent)
{
elemento.attachEvent('on'+nomevento,funcion);
return true;
}
else
if (elemento.addEventListener)
{
elemento.addEventListener(nomevento,funcion,captura);
return true;
}
else
return false;
}

Veamos las partes más importantes de nuestro problema:

si se trata del IE inicializamos la propiedad returnValue con el valor false, luego extraemos la propiedad href del objeto que disparó el evento (en nuestro caso el ancla). Luego con el método open del objeto window abrimos una ventana.



if (window.event)
{
window.event.returnValue=false;
var url=window.event.srcElement.getAttribute('href');
var ventana=open(url);
}

De forma similar si se trata de otro navegador que respeta los estándares del DOM tenemos el siguiente código:

if (e)
{
e.preventDefault();
var url=e.target.getAttribute('href');
var ventana=open(url);
}

Es decir llamamos al método preventDefault del objeto e que llega como parámetro a la función. Seguidamente obtenemos la referencia del atributo href y procedemos a la apertura de la ventana.












Opciones
Estadísticas
Creado 01.01.1970 a las 00:00 hs
Categoría DHTML

  • Medallas
  • 0
    Favoritos
  • 9709
    Visitas
  • 0
    Puntos
  • 0
    Seguidores
Comentarios
0
Cargando comentarios espera un momento...
No tienes permisos para comentar.

Para poder comentar necesitas estar Registrado. O.. ya tienes usuario? Logueate!
Autor del post
Ver perfil de Administrador Administrador
Hombre Administrador  Mensaje
43 1,352 1
Medallas
No tiene medallas
Tags
Posts relacionados