Вопрос

У меня есть этот код, execcommand для жирного шрифта, и он не работает в Opera. У кого -нибудь есть представление, почему? Благодарность

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


}

Я называю начальную функцию с помощью Body Onload. Это нормально Firefox и IE, но не работает в опера. Кто -нибудь знает о некоторых ограничениях ExecCommand в Opera? Благодарность

Это было полезно?

Решение

В цитируемом скрипте переменной «редактор» дается значение только в разделе Sniffing Browser. В Opera «Редактор» будет неопределенным и, следовательно, попытка сделать «editor.execcommand ()» вынесет ошибку.

Скорее, чем

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

Вы должны бросить браузер, нюхая и сделать что -то вроде

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

Надеюсь, это поможет :)

Другие советы

Прежде чем дать ответ, я хочу быть уверенным в том, что вы спрашиваете. Сценарий тестирует Netscape или IE. Открытие стрекоза Консоль, вы можете обнаружить значения вашего сценария. У меня такое чувство, что у вас тоже будут трудности с Webkit.

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

Я отметил, что новые версии оперы появляются как Netscape, когда вы просите его с Navigator.appname. Я помню, что это было не всегда так, потому что я также получил несколько старых "IFS" вокруг своего источника, где я использовал обычное имя. Не могу сказать, с тех пор, как это, просто говоря.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top