Domanda

Ho questo codice, ExecCommand per il grassetto, e non sta funzionando in opera. Qualcuno ha qualche idea del perché? grazie

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


}

i chiamata di funzione iniziare con onload corpo. è ok Firefox e IE, ma non funziona in opera. nessuno conosce alcune restrizioni di ExecCommand in opera? grazie

È stato utile?

Soluzione

Nello script citato, la variabile "Editor" viene dato un valore solo all'interno del browser sniffing sezione. In Opera "Editor" sarà indefinito e quindi cercando di fare "Editor.execCommand ()" si genera un errore.

Piuttosto che

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

si dovrebbe cadere il browser sniffing e fare qualcosa di simile

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

La speranza che aiuta:)

Altri suggerimenti

prima di dare una risposta voglio essere sicuro di quello che stai chiedendo. Lo script sta testando Netscape o IE. Apertura libellula console, è possibile scoprire i valori dello script. Ho la sensazione che si avrà difficoltà con Webkit troppo.

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

ive ha notato che le versioni più recenti di Opera appaiono come Netscape quando si chiede con navigator.appName. Mi ricordo che non è sempre stato così, perché ho anche avuto alcuni "se" anziani in tutto la mia fonte in cui ho usato il nome regolare. Non posso dire da quando questo è, solo dicendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top