Ver Mensaje Individual
  #20 (permalink)  
Antiguo 31/05/2011, 23:33
Avatar de _cronos2
_cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cambiar tipo de nodo

Cita:
Iniciado por zerokilled
sospecho que pudiera ser que al momento de invocar codigos definido en el script, aun este no existen. es decir, el script no ha cargado. por otro lado, fijate que el codigo aun tiene error. me parece que estas tratando de abarcar multiples funcionalidades. por ejemplo, si el string esta compuesto del nombre de un tag la funcion devuelve la creacion de dicho elemento. sin embargo, obtienes error si es un tag completo. por ejemplo, "<b>" genera error porque esta compuesto de caracteres invalidos.
Sí, tiene toda la pinta, porque si ejecuto el código que depende del insertado cuando este ha cargado, todo bien.
Y también tienes toda la razón, me centré en hacer la parte "difícil" y lo otro se me pasó Solucionado con un replace:
Código Javascript:
Ver original
  1. String.extender({
  2.  'HTML' : function(){
  3.   var str = this.replace(/^\s*([\S\s]+?)\s*$/, '$1');
  4.   var regexps = [
  5.                  /^<?([A-z]+)>?$/,
  6.                  /^<([A-z]+)[^>]*( \/)?>([\s\S]*?<\/\1>)?$/
  7.                 ];
  8.   if(regexps[0].test(str)){
  9.    return document.createElement(str.replace(regexps[0], '$1'));
  10.   }
  11.   if(regexps[1].test(str)){
  12.    var div = document.createElement('div');
  13.    div.innerHTML = str;
  14.    var elmnt = P(div).primerElemento(), tn = elmnt.tagName.toLowerCase(); // tn = TagName
  15.    if(tn !== 'script' && tn !== 'link'){
  16.     return elmnt;
  17.    }
  18.    var e = document.createElement(elmnt.tagName.toLowerCase());
  19.    var html = div.innerHTML;
  20.    html = html.replace(/^<[A-z]+ ?/, '').replace(/<\/[A-z]+>$/, '').replace(/( \/)?>$/, '');
  21.    html = html.split(' ');
  22.    for(var i = 0; act = html[i]; i++){
  23.     partes = act.split('=');
  24.     e.setAttribute(partes[0], partes[1].replace(/('|")(.+?)\1/, '$2'));
  25.    }
  26.    div.innerHTML = '';
  27.    div.appendChild(e);
  28.    return div.firstChild;
  29.   }
  30.  }
  31. });
Saludos y gracias de nuevo :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red