Ver Mensaje Individual
  #9 (permalink)  
Antiguo 10/01/2010, 11:56
Avatar de junihh
junihh
 
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 3 meses
Puntos: 7
Respuesta: Aplicar una funcion a un objeto creado dinamicamente

Hola nuevamente @Panino

Me puse a releer el codigo y logre optimizarlo razonablemente asegurandome de depender de un solo objeto, de manera que no se genere cada vez. Aqui completo:

Código HTML:
// Set tooltip objects

var ttTempTitle, ttTempTimer;

var ttObject = document.createElement ('div');
ttObject.style.backgroundColor = '#000';
ttObject.style.fontFamily = 'Helvetica, Arial, sans-serif';
ttObject.style.fontSize = '10px';
ttObject.style.color = '#FFF';
ttObject.style.border = 'solid 1px #FFF';
ttObject.style.padding = '6px';
ttObject.style.position = 'absolute';
ttObject.style.left = '0px';
ttObject.style.top = '0px';
ttObject.style.display = 'none';
ttObject.id = 'lyrtooltip';
ttObject.innerHTML = '';
document.body.appendChild (ttObject);
ttObject.style.zoom = 1;

// Tooltips engine

function setAllTitles ()
{
    var objs = document.getElementsByTagName('*');
    var objsCant = objs.length;
    //
    for (var i = 0; i < objsCant; i++)
    {
	   var obj = objs[i];
	   //
	   if (obj.title)
	   {
		  obj.onmouseover = function () { tooltipOverThis (this); }
		  obj.onmouseout = function () { tooltipOutThis (this); }
	   }
    }
}

function tooltipOverThis (obj)
{
    ttTempTitle = obj.title;
    obj.removeAttribute ('title');
    //
    ttObject.style.display = 'none';
    ttObject.innerHTML = ttTempTitle;
    //
    document.onmousemove = function (evt)
    {
	   ttObject.style.left = ( parseInt (mouseX(evt)) + 15 ) + 'px';
	   ttObject.style.top = ( parseInt (mouseY(evt)) - 5 ) + 'px';
	   ttObject.style.display = 'block';
    }
    //
    clearInterval (ttTempTimer);
    ttTempTimer = setInterval(funcInter,5000);
    function funcInter () { clearInterval (ttTempTimer); tooltipOutThis (obj); }
}
function tooltipOutThis (obj)
{
    clearInterval (ttTempTimer);
    obj.title = ttTempTitle;
    ttObject.style.display = 'none';
    document.onmousemove = null;
}

function mouseX (evt)
{
    if (!evt) evt = window.event;
    if (evt.pageX) return evt.pageX; else if (evt.clientX) return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
    else return 0;
}
function mouseY (evt)
{
    if (!evt) evt = window.event;
    if (evt.pageY) return evt.pageY; else if (evt.clientY) return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
    else return 0;
}
Gracias por el link y por mencionar el tema de los eventos, ya habia leido algo. De todos modos todos estos scripts los estoy implementado en mi propio CM, por lo que me asegurare que los clientes usen navegadores que no sean Explorer cuando me contraten, de todos modos no soy de los que no apoyan el uso de Explorer como veras en mi firma
__________________
JuniHH
- Mi blog
- Mi portafolio