Pregunta

Tengo este código, ExecCommand para Bold, y no funciona bajo Opera. ¿Alguien tiene alguna idea de por qué? Gracias

  <script type="text/javascript">

 function SetToBold () {
        Editor.execCommand ('bold', false, null);
    }


 function start() {

    frames.iView.document.designMode = "On";

    var myIFrame = document.getElementById("iView");
    browser = navigator.appName;


    if (document.all) {  //IE
      var iframe_window = window.frames["iView"];
      iframe_window.document.body.focus();
    }
    else {  //Firefox
      field = myIFrame.contentWindow.document.getElementsByTagName("body")[0];
      setTimeout("field.focus()",250);
    }   


    if (browser == "Netscape") {  
      Editor = myIFrame.contentWindow.document;
      Editor.designMode = 'On';
      Editor.body.contentEditable = 'true';
    }

    else if(browser == "Microsoft Internet Explorer")  {  
      frames['iView'].document.designMode='On';
      Editor = frames['iView'].document;
    }


}

Llamo a la función de inicio con el cuerpo en carga. Está bien Firefox e IE, pero no funciona en Opera. ¿Alguien sabe algunas restricciones de ExecCommand en Opera? Gracias

¿Fue útil?

Solución

En el script citado, la variable "editor" recibe un valor solo dentro de la sección de olfateo del navegador. En Opera, el "editor" estará indefinido y, por lo tanto, tratar de hacer "editor.execCommand ()" lanzará un error.

Más bien que

if (browser == "Netscape") {  
  Editor = myIFrame.contentWindow.document;
  Editor.designMode = 'On';
  Editor.body.co`enter code here`ntentEditable = 'true';
}

else if(browser == "Microsoft Internet Explorer")  {  
  frames['iView'].document.designMode='On';
  Editor = frames['iView'].document;
}

Deberías dejar caer el navegador olfateando y hacer algo como

if ( myIFrame && myIFrame.contentWindow ) {  
  Editor = myIFrame.contentWindow.document;
  Editor.designMode = 'On';
}
else if( frames['iView'] )  {  
  frames['iView'].document.designMode='On';
  Editor = frames['iView'].document;
}

Espero que ayude :)

Otros consejos

Antes de dar una respuesta, quiero estar seguro de lo que está preguntando. El script está probando Netscape o IE. Apertura libélula Consola, puede descubrir los valores de su script. Tengo la sensación de que también tendrás dificultades con WebKit.

>>> var browser = navigator.appName
undefined
>>> browser
"Opera"

He notado que las versiones más nuevas de Opera aparecen como Netscape cuando lo pides con Navigator.appname. Recuerdo que no siempre fue así porque también obtuve algunos "IF" mayores alrededor de mi fuente donde usé el nombre regular. No puedo decir que cuando esto sea, solo digo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top