42 votes

Comment mettre l'accent sur l'éditeur ACE ?

J'utilise le composant ace editor d'ajax.org dans une interface jquery tab. Chaque onglet contiendra un éditeur d'ACE distinct. Chaque fois que je passe à un nouvel onglet, l'éditeur n'aura pas le focus.

Je peux détecter quand un onglet est sélectionné en liant à l'événement "tabsshow" de l'interface utilisateur de jquery. Est-ce que quelqu'un sait comment mettre au point l'éditeur dans celui-ci si disons que l'id de mon éditeur div est editor-tab-0 pour le premier onglet, et ainsi de suite... ?

S'il vous plaît, quelqu'un peut-il vous aider ?

38voto

Bhushan Nagaonkar Points 196
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

23voto

Julian Points 972

Pour vous concentrer sur la fin :

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

Merci à @a-user

12voto

daniellmb Points 10289

Belle solution, mais je voulais aller à la fin de la dernière ligne pas au début de la dernière ligne.

//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);

4voto

Paul Beusterien Points 8051

Voici un extrait de mon code qui met l'accent sur une session d'édition Ace dans un onglet de l'interface utilisateur jQuery :

    $('#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();
            }

0voto

Spider Points 2205

J'utilise JQuery avec l'éditeur Ace, et j'ai trouvé que le code suivant fonctionnait très bien pour moi. PS : La fenêtre de mon éditeur de code est dans une iframe :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X