Frage

Ich habe diesen Code, Execcommand für BOLD, und er funktioniert nicht unter Opera. Hat jemand eine Idee warum? Danke

  <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;
    }


}

Ich rufe die Startfunktion mit Body Onload auf. Es ist in Ordnung, Firefox und dh, funktioniert aber nicht in der Oper. Kennt jemand einige Einschränkungen von Execcommand in der Opera? Danke

War es hilfreich?

Lösung

Im zitierten Skript erhält der Variable "Editor" nur im Abschnitt "Browser". In Opera wird "Editor" undefiniert sein und versucht daher, "editor.execcommand ()" zu tun. "

Statt

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;
}

Sie sollten das Browser -Schnüffeln fallen lassen und so etwas tun

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

Ich hoffe, das hilft :)

Andere Tipps

Bevor ich eine Antwort gibt, möchte ich sicher sein, was Sie fragen. Das Skript testet Netscape oder dh. Öffnung Libelle Konsole, Sie können die Werte Ihres Skripts entdecken. Ich habe das Gefühl, dass Sie auch Schwierigkeiten mit Webkit haben werden.

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

Ich habe festgestellt, dass die neueren Oper -Versionen als Netscape erscheinen, wenn Sie mit Navigator.Appname danach fragen. Ich erinnere mich, dass das nicht immer so war, weil ich auch ältere "ifs" um meine Quelle bekam, wo ich den regulären Namen verwendet habe. Ich kann nicht sagen, wenn dies so ist, nur zu sagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top