Foros del Web » Programando para Internet » Javascript »

innerHTML y Explorer

Estas en el tema de innerHTML y Explorer en el foro de Javascript en Foros del Web. Hola tengo un problema, me funciona bien con mozilla y Chrome, pero da error en explorer... Funciona bien en Mozilla y Chrome esto... Código: pr=document.getElementById( ...
  #1 (permalink)  
Antiguo 10/09/2008, 02:45
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
innerHTML y Explorer

Hola tengo un problema, me funciona bien con mozilla y Chrome, pero da error en explorer...

Funciona bien en Mozilla y Chrome esto...

Código:
 
pr=document.getElementById('areatxt').value;
editores.body.innerHTML=pr;
alert ('Soy FireFox '+editores.body.innerHTML+' = '+pr);

Me inserta en un div la variable pr.


pero con Explorer no funciona

estoy porbando algo así

Código:
prr=document.getElementById('areatxt');
 
var conetnido=document.createTextNode(prr); document.getElementById('edit').appendChild(contenido);
alert ('Soy Internet Explorer = '+prr);

He buscado y rebuscado por toda la red, y no consigo entender que pasa, con javascript estoy empezando y se me escapa esta funcion, he leido que innerHTML da problemas con explorer, pero no consigo hacerlo funcionar.

Gracias
  #2 (permalink)  
Antiguo 10/09/2008, 06:41
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
Respuesta: innerHTML y Explorer

Me parece que no nos estás diciendo todo. Me da la impresión de que estás usando un iframe? No es lo mismo trabajar con un iframe que con un elemento div.
  #3 (permalink)  
Antiguo 10/09/2008, 08:46
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: innerHTML y Explorer

Jejejeje Me has pillado !
Hola Panino5001, cierto, es más te dire qeu esta sacado del codigo que colgaste tu una vez por este foro.

La cuestión es qeu me funciona bien, pero me esta fallando cuando tengo el formulario de modificación.

Recojo el texto de una base ded atos esta la recibo bien ya que la saco por un alert y ok pero el problema es cuando he de pasar la variable al iframe, la verdad es qeu no entiendo muy bine si lo he de pasar al div oculto o al ifrmae te paso el codigo qeu me esta funcionando con Mozilla y Chrome

Código:
 
 
window.onload=
function(){
 
editor=document.getElementById('edit').contentDocument || document.getElementById('edit').contentWindow.document;
editor.designMode=
 
'on';
}
var editor;
 
function  $(id){
return document.getElementById(id);
}
 
function formato(f){
editor.execCommand(f, false, null);
 
}
function rev(t) {
return t.split("<").join("&lt;").split(">").join("&gt;").split("\"").join("&quot;");
}
function 
 
inHTML(){
var u,u2;
if(!(u=prompt('ingresar html')))return;
 
try{
editor.execCommand("inserthtml",false,u);
}catch(e)
{
try{
u2=editor.selection.createRange();
u2.pasteHTML(u);
}catch(E){
alert('nop');
}
}
}
function 
 
insertarEnlace()
{
var u;
if(!(u=prompt('ingresar url','http://')))return;
editor.execCommand(
 
"CreateLink",false,u);
 
}
 
function guarda()
{
pr=document.getElementById('areatxt');
codigo=editor.body.innerHTML;
//alert ('EL codigo es : '+codigo);
pr.childNodes[0].nodeValue=codigo;
}
function 
 
monta()
{
 
editores=document.getElementById('edit').contentDocument || document.getElementById('edit').contentWindow.document;
editores.designMode='on';
 
pr=document.getElementById('areatxt').value;
 
try {
editores.body.innerHTML=pr;
alert ('Soy FireFox '+editores.body.innerHTML+' = '+pr);
}
catch(e)
{
 
var oldEl = (typeof el === "string" ? document.getElementById('ht') : 'ht');
/*@cc_on // Puro innerHTML para IE (que es más rápido)
oldEl.innerHTML = pr;
return oldEl;
@*/
var newEl = oldEl.cloneNode(false);
newEl.innerHTML = pr;
oldEl.parentNode.replaceChild(newEl, oldEl);
 
 
alert ('Soy Internet Explorer contenido '+conetnido+'= '+prr);
}
 
 
} 

y la parte del HTML...



La verdad que estoy empezando con el javascript y voy un tanto perdido.
  #4 (permalink)  
Antiguo 10/09/2008, 08:48
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: innerHTML y Explorer

Y esta es la parte del HTML...

Código PHP:
 
[left]echo "<tr><td class='tiket' valign='top'>".dice($campo)."</td>";
echo "<td>";
?>
<input type="button" class="editortxt" name="Submit" value="NEGRITA" onclick="formato('bold')" />
<input type="button" class="editortxt" name="Submit5" value=" Link " onclick="insertarEnlace()" />
<input type="button" class="editortxt" name="Submit9" value="quitar Link" onclick="formato('Unlink')" />
<input type="button" class="editortxt" name="Submit12" value="insertar html" onclick="inHTML()" />

 
 
<iframe id="edit" class="editortxtmod" >xx</iframe>
<div id="ht" ></div>
<br/><textarea id="areatxt" name="<?php echo $campo;?>" ><?php echo $valor;?></textarea>
<?php
[/left]
echo 
"</td></tr>";
La funcion montar es la qeu uso para montar el formulario de modificación.

La funcion Guardar cuando el formulario recibe el onsubmit se guarda en un (textarea provisonal par aver loq eu pasa) que luego sera un hidden. Y poderlo envia r ala base de datos.

Bueno lo puse en 2 post ya que me contaba una burrada de caracteres... en fin... estoy estancado ya qeui he buscado un monton de documentación y las he probado todas pero esta claro qeu fallo en algo fundamental qeu no se ver...
se agradece ...
  #5 (permalink)  
Antiguo 10/09/2008, 09:20
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
Respuesta: innerHTML y Explorer

Mmm. No sé si entendí bien lo que querés hacer. Si se trata de tomar el html del editor y guardarlo en un campo de formulario, lo que deberías hacer es asignar el valor a dicho campo al submitir el formulario. Suponiendo que el id de tu campo fuera 'campoOculto', sería algo así:
Código PHP:
<form id="form1" name="form1" method="post" action="editor2.php" onsubmit="document.getElementById('campoOculto').value=editor.body.innerHTML"><br /> 
  #6 (permalink)  
Antiguo 10/09/2008, 10:10
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: innerHTML y Explorer

No Eso esta solucionado... así lo ssoluciona para guardar en un campo oculto y se alamcena correctamenet en la BD..

Código PHP:
echo " <form action='modificar_2.php' onsubmit='guarda()' method='post'>"
Código:
 
function 
guarda() {
pr=document.getElementById('areatxt'); codigo=editor.body.innerHTML; //alert ('EL codigo es : '+codigo); pr.childNodes[0].nodeValue=codigo;
}
Peeerooo... estoy en el formulario de modificaciond edatos donde se recogen los datos de un registro para modificar.(es par un gestor de contenidos)

Todos los campos se recogen correctamente, pero no ay manera de meter el campo que correspondería al iframe del editor (con mozilla y chrome si que lo consigo ) pero con explorer no ay manera.
La funcion para montar el formulario de modificación es esta...

Código:
function
monta() {
editores=document.getElementById('edit').contentDocument || document.getElementById('edit').contentWindow.document;
editores.designMode='on';
pr=document.getElementById('areatxt').value;
try {
editores.body.innerHTML=pr;
alert ('Soy FireFox '+editores.body.innerHTML+' = '+pr); } catch
(e) {
var
oldEl = (typeof el === "string" ? document.getElementById('ht') : 'ht'); /*@cc_on // Puro innerHTML para IE (que es más rápido)
oldEl.innerHTML = pr; return oldEl; @*/ var newEl = oldEl.cloneNode(false); newEl.innerHTML = pr; oldEl.parentNode.replaceChild(newEl, oldEl);
alert ('Soy Internet Explorer contenido '+conetnido+'= '+prr);
}
la cual cargo con un
Código HTML:
<body onload="monta()"> 
Solamente es con explorer que me falla.

En fin estoy estancado.
Gracias
  #7 (permalink)  
Antiguo 10/09/2008, 10:27
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
Respuesta: innerHTML y Explorer

Ah, entiendo. Yo lo que hago es algo como esto:

Código PHP:

function iniciarEditor(){
editor=$('edit').contentDocument || $('edit').contentWindow.document;
editor.body.style.fontFamily='Myriad Roman, Arial, Helvetica, sans-serif';
editor.body.style.fontSize='12px';
editor.body.style.color='#8c8c8c';
editor.designMode='on';
<?php if(!empty($row['contenido'])){?>
try{
setTimeout(function(){editor.body.innerHTML='<?php echo $row['contenido']; ?>';},500);
}catch(e){}
<?php ?>
}
Y luego la llamo desde el mismo iframe:
Código PHP:
<iframe name="edit" frameborder="0" id="edit" width="100%" height="300" style=" border:1px solid #000; background-color:#FFF" onload="iniciarEditor()"></iframe
  #8 (permalink)  
Antiguo 10/09/2008, 10:37
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: innerHTML y Explorer

no eh leído todos los comentarios, solo quiero decir que es raro que innerHTML no funcione con explorer ya que es propiedad de explorer... Seguro que el error es otro.
__________________
twitter: @imbuzu
  #9 (permalink)  
Antiguo 10/09/2008, 10:51
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
Respuesta: innerHTML y Explorer

Hola, buzu, en efecto, sólo hay que diferir un tiempo la asignación para que explorer pueda realizarla sin problemas.
  #10 (permalink)  
Antiguo 10/09/2008, 12:24
Avatar de Did_Web  
Fecha de Ingreso: junio-2007
Ubicación: El vendrell (Tarragona)
Mensajes: 52
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: innerHTML y Explorer

Ok gracias panino5001 mañana lo pruebo y comento a ver como funciona.
Gracias
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 14:55.