Foros del Web » Programando para Internet » Javascript »

ejecutar js antes del onload pero con todo el html descargado

Estas en el tema de ejecutar js antes del onload pero con todo el html descargado en el foro de Javascript en Foros del Web. Hola Estoy haciendo un javascript para el navegador Opera y consiste en limpiar un poco el codigo de la pagina para ello me basta con ...
  #1 (permalink)  
Antiguo 30/10/2007, 02:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 47
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta ejecutar js antes del onload pero con todo el html descargado

Hola

Estoy haciendo un javascript para el navegador Opera
y consiste en limpiar un poco el codigo de la pagina
para ello me basta con ejecutarlo cuando ya se ha bajado
todo el codigo html y el DOM esta cargado
pero actualmente lo tengo capturando el evento onLoad
asi que no se ejecuta hasta que se han cargado todas las imagenes
y demas cosas asi

queria saber si hay algun evente que pueda capturar
para que el codigo se ejecute antes
si tener que esperar al onload, pero con toda la estructura html ya cargada
__________________
Visita www.GranFuckultad.tk y goza de risa
  #2 (permalink)  
Antiguo 30/10/2007, 03:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: ejecutar js antes del onload pero con todo el html descargado

Hola:

El window.onload se dispara cuando se lee la estructura DOM, sin esperar a que se descarguen las imágenes... cada imagen tiene su propio onload que sí que se dispara cuando está cargada... tal vez tengas algún script de precarga...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 30/10/2007, 05:02
 
Fecha de Ingreso: marzo-2005
Mensajes: 47
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Re: ejecutar js antes del onload pero con todo el html descargado

uuummm, pues yo juraria que se espera a que se cargue todo

El codigo es el siguiente

Código PHP:
document.addEventListener(
    
'load',
    function 
ujsenabledCleanURI() {

        
/********************************
        ** INICIO CONFIGURACION BASICA **
        *********************************/
        
var linkNuevoText=null;//"[...]"; //Si no es null se crea un link nuevo con ese texto. Si es null se sobreescribe el antiguo
        
var fixLinkType=0//1 = links de redireccion, 2 = links en javaScript window.open, 0 = ambos
        /*****************************
        ** FIN CONFIGURACION BASICA **
        ******************************/

        
var getJavascript = function (_link) {
            var 
_javascript=null;
            var 
protocoloJS=(_link.protocol!=null && _link.protocol.toLowerCase()=='javascript:');
            if (
protocoloJS || _link.hash=='#' || _link.href=='#') {
                var 
_onClick=_link.getAttribute('onclick');
                if (
_onClick!=null && (_onClick=_onClick.replace(/^s+|s+$/,"")).length>0_javascript=_onClick;
            }
            if (
protocoloJS) {
                var 
jsHref=_link.href.replace(/^s*(javascripts*:s*(voids*(s*0?s*)s*;?)?)?|s+$/,"");
                if (
jsHref.length>0) {
                    if (
_javascript==null_javascript=jsHref+";return false;";
                    else 
_javascript="if (function(){"+_javascript+"}()) {"+jsHref+"};return false;";
                }
            }
            return (
_javascript!=null && (_javascript=_javascript.replace(/;;+/g,";").replace(/^s+|s+$/,"")).length>0)?_javascript:null;
        }
        var 
getRegExpIzquierda = function(regExpStr) {
            return (
regExpStr==null || regExpStr.length==0)?null:new RegExp(regExpStr,"i");
        }
        var 
getRegExpDerecha = function(regExpStr) {
            return (
regExpStr==null || regExpStr.length==0)?null:new RegExp(regExpStr+"(?!"+regExpStr+")","i");
        }

        
/**********************************
        ** INICIO CONFIGURACION AVANZADA **
        ***********************************/
        
var httpMatch=getRegExpDerecha("https?(:|%3a)(\\/|%2f)(\\/|%2f)");
        var 
urlMatch=/window.opens*(s*["']([^"']*)["']/i;
        var 
linkPadreExcluidos getRegExpIzquierda(
                                                            
"https?(:|%3a)(\\/|%2f)(\\/|%2f)("+
                                                            
"translate\\.google\\.com"+
                                                            
")"
                                                        
); // links originales que se excluyen
        
var linkHijoExcluidos getRegExpIzquierda(
                                                            
"https?(:|%3a)(\\/|%2f)(\\/|%2f)("+
                                                            
document.location.hostname.replace(/./g,"\\.")+
                                                            
")"
                                                        
); // links parseados que se excluyen
        
var limpiarMas=new Array (
            /(?|&)[^=]+=(&|$)/
g,"$1"//Quitar parametros vacios
//            /(#|\?|&)$/g,"", //Quitar sufijos vacios
            
/^s+|s+$/g,""//trim
            
/(https?://www.20minutos.es/noticia/[0-9]+).*/,"$1"
        
); //Limpieza extra del link final
        /*******************************
        ** FIN CONFIGURACION AVANZADA **
        ********************************/

        
var x;
        var 
xx;
        var 
_aux;
        var 
_hrefLimpia;
        var 
_hrefSucia;
        var 
_hrefJS;
        var 
_linkViejo;
        var 
_javascript;
        var 
_search;
        var 
_hostname;
        var 
_match;
        var 
_onClick;
        var 
_target;
        var 
_relAttribute;
        var 
_linkNuevo;
        var 
_index;
        var 
_vieneDeJS;
        var 
_erroresTxt="";
        var 
_links=document.links;
        
        for(
x=_links.length-1;x>=0;x--) {
            
_linkViejo=_links[x];
            
_hrefSucia=_linkViejo.href;
            if (
linkPadreExcluidos==null || !linkPadreExcluidos.test(_hrefSucia)) {
                
_vieneDeJS=false;
                
_hrefLimpia=null;
                
_hrefJS=null;
                try {
                    
_javascript=getJavascript(_linkViejo);
                    if(
_javascript && fixLinkType!=1) {
                        
_match=_javascript.match(urlMatch);
                        if (
_match!=null) {
                            
_hrefLimpia=(_hrefJS=(RegExp.$1)).replace(///g,'\/');
                            
_hrefSucia=_hrefLimpia;
                        }
                    }
                    if(
fixLinkType!=&& (_hrefSucia.toLowerCase().indexOf("http")==0)) {
                        
_index=_hrefSucia.indexOf('?')+1;
                        
_search=(_index>0)?_hrefSucia.substr(_index):null;
                        if (
_search!=null && _search.length>0) {
                            if ((
_hrefSucia!=_linkViejo.href)||(_linkViejo.hostname && !_linkViejo.hostname.match(/w3c?.org$/))) {
                                
_match = (_search?_search.match(httpMatch):null);
                                if (
_match!=null) {
                                    
_hrefLimpia=_search.substr(_match.index).replace(/[&#].*$/g,'');
                                    
if (_hrefLimpia.indexOf("://")==-1_hrefLimpia=unescape(_hrefLimpia);
                                    
_hrefSucia=_hrefLimpia;
                                }
                            }
                        }
                    }
                    if (
limpiarMas!=null && limpiarMas.length>0) {
                        
_aux=_hrefSucia;
                        for(
xx=0;xx<limpiarMas.length;xx=xx+2) {
                            
_hrefSucia=_hrefSucia.replace(limpiarMas[xx],limpiarMas[xx+1]);
                        }
                        if(
_aux!=_hrefSucia_hrefLimpia=_hrefSucia;
                    }
                    if (
_hrefJS!=null_javascript=_javascript.replace(_hrefJS,"this.href","g").replace(/["']this.href["']/g,"this.href");
                    if(_hrefLimpia!=null && !(linkHijoExcluidos && linkHijoExcluidos.test(_hrefLimpia))) {
                        if(linkNuevoText!=null) {
                            _linkNuevo=document.createElement('
a');
                            _target = _linkViejo.getAttribute("target");
                            if (_target!=null && _target.length>0) _linkNuevo.setAttribute('
target',_target);
                            _linkNuevo.appendChild(document.createTextNode(linkNuevoText));
                            _linkViejo.parentNode.insertBefore(document.createTextNode(' '),_linkViejo.nextSibling);
                            _linkViejo.parentNode.insertBefore(_linkNuevo,_linkViejo.nextSibling.nextSibling);
                        } else _linkNuevo=_linkViejo;
                        
                        _relAttribute = _linkNuevo.getAttribute('
rel');
                        _relAttribute = _relAttribute ? ( _relAttribute + ' ' ) : '';
                        _linkNuevo.setAttribute('
rel',_relAttribute+'redirect');
                        _linkNuevo.title = (_linkNuevo.title?(_linkNuevo.title+' 
'):'')+'URL original'+_linkViejo.href;
                        _linkNuevo.setAttribute('
replacedurl',_linkViejo.href);
                        _linkNuevo.setAttribute('
href,_hrefLimpia);
                        if (
_hrefJS!=null_linkNuevo.setAttribute("onClick",_javascript);
                    }
                } catch (
_e) {_erroresTxt+=("\n\n"+_linkViejo.href+"\n"+_e);}
            }
        }
        if (
_erroresTxt!=null && _erroresTxt.length>0alert(_erroresTxt);
    },
    
false
); 
__________________
Visita www.GranFuckultad.tk y goza de risa
  #4 (permalink)  
Antiguo 30/10/2007, 09:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: ejecutar js antes del onload pero con todo el html descargado

Hola:

No sé de donde has sacado tu código. pero es la primera vez que veo aplicar el evento load al objeto document... valdría sobre window y sobre document.body, por ejemplo...

La verdad es que estudiar códigos complejos es bastante "pesado", pero sin duda window.onload se dispara con el cierre del tag html.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 05:12.