1

私はこのコード、BOLD の 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;
    }


}

ボディオンロードで開始関数を呼び出します。Firefox と IE では問題ありませんが、Opera では動作しません。オペラの execcommand のいくつかの制限について知っている人はいますか? ありがとう

4

3 に答える 3

2

引用されたスクリプトでは、変数「Editor」にはブラウザ スニッフィング セクション内でのみ値が与えられます。Opera では "Editor" が定義されていないため、"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;
}

それが役立つことを願っています:)

于 2011-01-25T02:52:55.640 に答える
1

答える前に、あなたが何を求めているのかを確認したいと思います。スクリプトは Netscape または IE をテストしています。Dragonflyコンソールを開くと、スクリプトの値を確認できます。Webkit でも問題が発生すると思います。

>>> var browser = navigator.appName
undefined
>>> browser
"Opera"
于 2011-01-24T19:05:15.857 に答える
0

navigator.appName で問い合わせると、opera の新しいバージョンは NETSCAPE として表示されることに注意してください。通常の名前を使用したソースの周りに古い「if」もあったため、常にそうであったとは限らないことを覚えています。これがいつからかは言えません、ただ言っているだけです。

于 2014-02-05T14:06:16.790 に答える