Ace: Option pour désactiver l'éditeur

Créé le 23 mai 2011  ·  18Commentaires  ·  Source: ajaxorg/ace

Similaire à l'attribut 'disabled' d'une zone de texte.

il sera similaire au mode readOnly, seule aucune interaction de l'utilisateur ne sera autorisée avec l'éditeur. Ainsi, le curseur et tous les marqueurs de ligne seront masqués.
@gissues :{"order":73.29192546583863,"status":"arriéré"}

Commentaire le plus utile

Ah, je vois maintenant.
Mais la quantité de fonctionnalités de l'éditeur à désactiver dépend du cas d'utilisation exact.
Je pense que la sélection et la capacité de se concentrer sur l'éditeur ne devraient pas être désactivées dans l'un ou l'autre de ces cas. La fenêtre d'affichage virtuelle sera utile pour afficher la sortie, mais la sélection du navigateur ne peut pas fonctionner avec elle. Et pour les exemples de code, il est généralement agréable de pouvoir faire ctrl+a ctrl+c .

Pour masquer le curseur et les lignes en surbrillance

editor.setOptions({
    readOnly: true,
    highlightActiveLine: false,
    highlightGutterLine: false
})
editor.renderer.$cursorLayer.element.style.opacity=0

pour rendre l'éditeur non tabulable

editor.textInput.getElement().tabIndex=-1
 or
editor.textInput.getElement().disabled=true

pour désactiver tous les raccourcis

editor.commands.commmandKeyBinding={}

je peux aussi ajouter des méthodes de destruction pour $mouseHandler et textInput pour les désactiver complètement

Tous les 18 commentaires

Cela a-t-il été implémenté quelque part ? Je trouverais également cette fonctionnalité très utile.

Quel est le cas d'utilisation pour cela? Je ne veux pas ajouter ceci au noyau car il est rarement utilisé et facile à mettre en œuvre

Quelque chose comme

editor.container.style.pointerEvents="none"
editor.container.style.opacity=0.5 // or use svg filter to make it gray
editor.renderer.setStyle("disabled", true)
editor.blur()

ou ca

var cover = document.createElement("div")
editor.container.appendChild(cover)
cover.style.cssText = "position:absolute;\
top:0;bottom:0;right:0;left:0;\
background:rgba(150,150,150,0.5);\
z-index:100"
cover.addEventListener("mousedown", function(e){e.stopPropagation()}, true)

travaillerait.

Le but n'est pas de le rendre visuellement désactivé, le but est de supprimer la possibilité pour l'utilisateur d'interagir avec lui. C'est-à-dire qu'ils ne peuvent pas contrôler le curseur (encore mieux, le curseur n'existe pas).
Il s'agit simplement d'un type plus strict de lecture seule plutôt que "désactivé". Cela serait pratique lorsque vous utilisez l'éditeur pour afficher des exemples de code ou la sortie de programmes en cours d'exécution sur la page Web. Bien que ce ne soit peut-être pas l'utilisation idéale pour l'éditeur, ses fonctionnalités telles que la coloration syntaxique et l'apparence générale en font une option attrayante à utiliser pour des choses comme celles-ci.

Les deux exemples de code n'accomplissent pas vraiment cela. Aucun d'eux ne supprime le curseur, et bien qu'ils fassent un très bon travail en ne laissant pas l'utilisateur contrôler le curseur, le focus peut être tabulé sur l'éditeur.

Ah, je vois maintenant.
Mais la quantité de fonctionnalités de l'éditeur à désactiver dépend du cas d'utilisation exact.
Je pense que la sélection et la capacité de se concentrer sur l'éditeur ne devraient pas être désactivées dans l'un ou l'autre de ces cas. La fenêtre d'affichage virtuelle sera utile pour afficher la sortie, mais la sélection du navigateur ne peut pas fonctionner avec elle. Et pour les exemples de code, il est généralement agréable de pouvoir faire ctrl+a ctrl+c .

Pour masquer le curseur et les lignes en surbrillance

editor.setOptions({
    readOnly: true,
    highlightActiveLine: false,
    highlightGutterLine: false
})
editor.renderer.$cursorLayer.element.style.opacity=0

pour rendre l'éditeur non tabulable

editor.textInput.getElement().tabIndex=-1
 or
editor.textInput.getElement().disabled=true

pour désactiver tous les raccourcis

editor.commands.commmandKeyBinding={}

je peux aussi ajouter des méthodes de destruction pour $mouseHandler et textInput pour les désactiver complètement

Excellent, ça a l'effet que je recherchais. Je suis d'accord sur les exigences qui diffèrent en fonction du cas d'utilisation exact, mais il peut être utile d'avoir plusieurs options pour désactiver des éléments tels que les curseurs ou les raccourcis, etc.

De plus, la dernière ligne de code ci-dessus semble empêcher l'éditeur d'afficher quoi que ce soit. :/

De plus, la dernière ligne de code ci-dessus semble empêcher l'éditeur d'afficher quoi que ce soit. :/

tu veux dire editor.commands.commmandKeyBinding={} ? ce serait très étrange

Merci pour cela!

Merci, il faut absolument une option pour désactiver l'éditeur !

Bonjour, avez-vous implémenté le destroyer $mouseHandler ? Je suis un peu perdu (nouveau ici). Ou y a-t-il un moyen de le désactiver ? Merci d'avoir désactivé l'éditeur :-)

@nightwing
editor.renderer.$cursorLayer.element.style.opacity=0
Il semble que $cursorLayer ne soit plus un attribut de VirtualRenderer maintenant.
Je veux masquer le curseur lorsque mon éditeur est dans l'état 'readOnly', et j'essaie la méthode que vous avez donnée, mais cela ne fonctionne pas car $cursorLayer n'est pas un attribut de VirtualRenderer ; Existe-t-il un autre moyen de cacher le curseur ?

J'ai trouvé qu'il existe deux méthodes dans VirtualRenderer, hideCursor() et setCursorStyle(), et j'essaie de les utiliser de la manière suivante. Mais cela ne fonctionne pas aussi bien.
this._editor.renderer.hideCursor();
this._editor.renderer.setCursorStyle("opacité : 0 ;");
Ai-je tort d'utiliser?

Est-ce un travail en cours ? Je voudrais désactiver l'éditeur lorsque le focus en sort.

Pareil ici! Je voudrais utiliser la méthode renderer.hideCursor() mais cela ne semble pas fonctionner. J'ai essayé de l'appeler dans mon bloc d'initialisation de l'éditeur et dans l'événement changeCursor mais je ne parviens pas à le faire fonctionner.

pour les personnes souhaitant toujours désactiver le curseur, utilisez la propriété css3 pointer-events: none; sur l'élément de l'éditeur.

Comment désactiver l'éditeur, toujours juste un nouveau développeur de réaction ? S'il vous plaît apprécierait toute aide

pour les personnes souhaitant toujours désactiver le curseur, utilisez la propriété css3 pointer-events: none; sur l'élément de l'éditeur.

Comment désactiver l'éditeur ?

pour les personnes souhaitant toujours désactiver le curseur, utilisez la propriété css3 pointer-events: none; sur l'élément de l'éditeur.

Comment désactiver l'éditeur ?

editor.setOptions({
    readOnly: true,
})

A fonctionné comme un charme

Le mer. 23 sept. 2020, 22 h 27 Nehal Hasnayeen [email protected]
a écrit:

pour les personnes qui souhaitent toujours désactiver le curseur, utilisez la propriété css3 pointer-events :
rien; sur l'élément de l'éditeur.

Comment désactiver l'éditeur ?

editor.setOptions({
lecture seule : vrai,
})


Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/ajaxorg/ace/issues/266#issuecomment-698073286 , ou
Se désabonner
https://github.com/notifications/unsubscribe-auth/ALIR2LMEV5BHDXPXO7RT5BTSHKVAPANCNFSM4AESJK3A
.

Cette page vous a été utile?
0 / 5 - 0 notes