Cita:
Iniciado por enchufe como puedo hacer para que solo se dispare la "funcion" en caso de que el click no sea sobre objetos o enlaces de la pagina.
Hay que cancelar el burbujeo de eventos con esta función:
Código Javascript
:
Ver originalfunction detenerBurbujeo(e)
{
if(window.event)
{
window.event.cancelBubble= true;
}
else
if(e)
{
e.stopPropagation();
}
}
Se debe de llamar a esta función en el evento 'onclick' de los elementos que no se desea que activen la funcion declarada para BODY, por ejemplo los enlaces. En caso de que estos elementos tengan una función ya asociada al evento 'onclick' se debera llamar a detenerBurbujeo() al final del código de esta función. Dejo un simple ejemplo de su uso.
Código Javascript
:
Ver original<script language="javascript">
function verBody()
{
alert("clic sobre el body");
}
function verBoton(e)
{
alert("clic sobre el botón");
detenerBurbujeo(e);
}
function verDiv(e, mensaje)
{
alert("el mensaje es: "+mensaje);
detenerBurbujeo(e);
}
function detenerBurbujeo(e)
{
if(window.event)
{
window.event.cancelBubble= true;
}
else
if(e)
{
e.stopPropagation();
}
}
</script>
<body onclick="verBody()">
<input type="button" value="primer botón" onclick="verBoton(event)">
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<div style="width:350px; height:50px; background-color:#ffcc33;" onclick="verDiv(event,'mensaje de prueba')">
En este div se cancela en burbujeo.
</div>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<a href="http://www.google.com" onclick="detenerBurbujeo(event)">google</a>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<div style="width:350px; height:50px; background-color:#ffcc33;">
En este div no se cancela el burbujeo.
</div>
</body>
Es de vital importancia no olvidar pasar el objeto 'event' como parámetro para la función 'detenerBurbujeo()' ya que es necesario para navegadores diferentes a IE.