web-dev-qa-db-ja.com

エースエディターにフォーカスを設定する方法?

Jqueryタブインターフェイス内でajax.orgのaceエディターコンポーネントを使用しています。各タブには、個別のエースエディターが含まれます。新しいタブに切り替えるたびに、そのタブのエディターにフォーカスが移りません。

Jquery UIの「tabsshow」イベントにバインドすることで、タブが選択されたことを検出できます。私のエディターdivのIDが最初のタブのeditor-tab-0である場合、その中のエディターにフォーカスを設定する方法を知っている人はいますか?

助けてもらえますか?

35
Ameet
editor.focus(); //To focus the ace editor
var n = editor.getSession().getValue().split("\n").length; // To count total no. of lines
editor.gotoLine(n); //Go to end of document
35
rockvilla

最後に焦点を合わせるには:

editor.focus();
editor.navigateFileEnd();

@ a-userに感謝

12
Julian

素晴らしい解決策ですが、最終行の先頭ではなく、最終行の末尾に移動したかったのです。

//To focus the ace editor
editor.focus();
session = editor.getSession();
//Get the number of lines
count = session.getLength();
//Go to end of the last line
editor.gotoLine(count, session.getLine(count-1).length);
11
daniellmb

以下は、jQuery UIタブのAce編集セッションにフォーカスを設定する私のコードからの抜粋です。

    $('#tabs_div').tabs(
        {
            select : function(event, ui) {
                        var tabName = ui.panel.id;
                        var doc = docs.get(tabName);  // look up the EditSession
                        var session = env.split.setSession(doc);
                        session.name = tabName;
                        env.editor.focus();
            }
3
Paul Beusterien

私はAceエディターでJQueryを使用しており、次のコードが本当にうまく機能していることがわかりました。 PS:コードエディターウィンドウはiframe内にあります:

$('#modelFrame').mouseover(function() {
    try {
        $(this).get(0).contentWindow.editor.focus();
    } catch (doNothing) {
        ;;
    }
});
0
Spider