0

そのため、作業中のWindows 8 JavaScriptアプリにACEを埋め込もうとしていますが、多くの問題が発生しました。これが私の<pre id="ace-editor">要素をエースエディターに変えるために使用される私のコードです。

WinJS.Utilities.ready(function ()
{
    var editor = ace.edit('ace-editor');

    editor.setTheme('ace/theme/monokai');

    editor.getSession().setMode('ace/mode/javascript');
    editor.getSession().setTabSize(4);
    editor.getSession().setUseSoftTabs(false);
    editor.setShowPrintMargin(false);

});

まず、少しの位置と点滅時間のオフセットで、重複したカーソルが表示されます。下の画像をご覧ください。

次に、エディターを作成したら、エディターオブジェクトの属性を変更できるように、すべてのメソッドを2回呼び出す必要があります。たとえば、以下のスニペットを見てください。

editor.setTheme('ace/theme/clouds');
editor.setTheme('ace/theme/clouds');

それがテーマを変えるために私がしなければならないことです。メソッドを一度呼び出しても、setTheme()それは実行されません。

今、私はWindows Storeの開発に不慣れですが、少しいじった後、デフォルトで追加されたコアUIスタイルシートを削除するとカーソルが消えることがあります。コアJSファイルについても同じことが言えます。それらを取り除くと、二重発火の問題はなくなります。ここにいる誰かが、なぜこれが起こっているのかについての解決策や手がかりを持っていますか?競合しないバージョンのAceを使用していますが、他のバージョンも試しました。これはAceよりもWinJSの問題のように聞こえると思いますが、ここにいる誰かが私を助けてくれるなら、それは素晴らしいことです。

ありがとう!

アップデート:

カーソルが重複している場合、ACEはユーザーエージェントで文字列「MicrosoftInternet Explorer」を使用していないため、Windowsストアアプリ環境を正しく検出していないようです。代わりに、「MSAppHost/1.0」か何かです。だから私は自分を変えてace.js、今は両方を検出しています。更新されたコードは次のとおりです。

(navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0)

ありがとう、user1743328!

4

1 に答える 1

3

2 番目のカーソルについては、https://github.com/ajaxorg/ace/blob/master/lib/ace/virtual_renderer.js#L79を参照してください。おそらく、win8 ユーザーエージェントが IE として認識されないだけです。

于 2012-12-31T15:54:41.920 に答える