質問
私はこのコード、execcommand for boldを持っていますが、オペラの下では機能していません。誰かが理由を持っている理由は?ありがとう
<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のいくつかの制限について誰かが知っていますか?ありがとう
解決
引用されたスクリプトでは、変数の「エディター」には、ブラウザスニッフィングセクション内にのみ値が与えられます。 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"
iveは、Navigator.Appnameで尋ねると、オペラの新しいバージョンがNetscapeとして表示されることに注目しました。私はいつもそうではないことを覚えています。なぜなら、私は通常の名前を使用したソースの周りに古い「ifs」も持っているからです。これがあるときから言うことはできません。
所属していません StackOverflow