Foros del Web » Programando para Internet » Javascript »

JavaScript no intrusivo - asignar eventos en IE

Estas en el tema de JavaScript no intrusivo - asignar eventos en IE en el foro de Javascript en Foros del Web. Hola a todos como dice el titulo de mi post estoy implementando en mi pagina lo que es javascript no intrusivo para tener un mejor ...
  #1 (permalink)  
Antiguo 03/12/2007, 13:50
 
Fecha de Ingreso: octubre-2007
Mensajes: 5
Antigüedad: 16 años, 6 meses
Puntos: 0
Exclamación JavaScript no intrusivo - asignar eventos en IE

Hola a todos

como dice el titulo de mi post estoy implementando en mi pagina lo que es javascript no intrusivo para tener un mejor funcionamiento de la misma pero tengo un problemita como suele ocurrir siempre con JS en IE estoy haciendo lo siguiente.

function asigna()
{
d = document.getElementsByTagName('img');

for(i=0;i<d.length;i++)
{
if(d[i].className == 'imagen')
{
d[i].setAttribute("onmouseover","msj('"+d[i].src+"')");
}
}
}

function msj(m)
{
alert(m);
}

Alguien que le haya ocurrido algun caso similar y que lo pueda compartir para poder solucinar este problemilla esto funciona bien en Firefox pero IE como siempre dando dolores de cabeza espero alguien me pueda ayudar con esto de antemano gracias.
  #2 (permalink)  
Antiguo 03/12/2007, 14:25
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: JavaScript no intrusivo - asignar eventos en IE

loading............

Es un problema típico de CLOSURES.

http://blog.morrisjohns.com/javascri...es_for_dummies

Pero para hacer lo que TU quieres hacer.. solo debes hacer esto
Código PHP:
function asigna()
{
document.getElementsByTagName('img');

for(
i=0;i<d.length;i++)
{
if(
d[i].className == 'imagen')
{
 
d[i].onmouseover=msj;
}
}
}

function 
msj()
{
alert(this.src);

Y si quieres implementar closures debes hacer lo siquiente.

Código PHP:
/***************************************************************************
*                                   maborak.js
*                        ------------------------
*   Copyleft    : (c) 2007 maborak.com <[email protected]>
*   Version        : 1.2.4
*
***************************************************************************/

/***************************************************************************
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
*
***************************************************************************/
var argumentsToArray=function(a){
        var 
args=[];
        for(var 
i=0;i<a.length;i++){args.push(a[i]);};
        return 
args;
    };
Function.
prototype.args=function()
        {
            var 
oThis=this;
            var 
args=argumentsToArray(arguments);
            return function()
            {
                return 
oThis.apply(oThis,argumentsToArray(arguments).concat(args));
            };
        }; 
Y para usarlo

Código PHP:
function asigna()
{
document.getElementsByTagName('img');

for(
i=0;i<d.length;i++)
{
if(
d[i].className == 'imagen')
{
 
d[i].onmouseover=msj.args(d[i].src);
/*
Puedes pasarle cuantos argumentos quieras
d[i].onmouseover=msj.args(arg1,arg2,arg3); 
*/
}
}
}

function 
msj(m)
{
alert(m);

connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 03/12/2007, 14:47
 
Fecha de Ingreso: octubre-2007
Mensajes: 5
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: JavaScript no intrusivo - asignar eventos en IE

Muchas gracias esto me sirvio de mucho ya no tendre que regresar a colocar el js en las etiquetas html.
  #4 (permalink)  
Antiguo 03/12/2007, 17:01
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: JavaScript no intrusivo - asignar eventos en IE

Otra manera de resolverla es con una función anoónima que se autoejecute:
Código PHP:
<script>
function 
asigna()
{
document.getElementsByTagName('img');

for(
i=0;i<d.length;i++)
{
(function(){
var 
ii=i
if(d[ii].className == 'imagen')
{
d[ii].onmouseover=function(){msj(this.src);}
}
}())
}
}

function 
msj(m)
{
alert(m);
}
window.onload=asigna;
</script> 
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 10:46.