저는 Ace 편집기를 부트 스트랩 3 모달에 포함 시켰습니다. 모달가 표시되기 전에,이 같은 편집기에서 값을 설정 :Ace는 Firefox에서 포커스가있는 편집기의 모든 텍스트를 선택합니다.
var editor = ace.edit(aceEditorId);
editor.session.setValue(val, -1); // set value at document start
editor.session.selection.clearSelection();
나는 또한 편집기의 크기를 조정 모달에 대해 "표시"이벤트 핸들러가
: 나는 초점
$(editSnippetSelector).on("shown.bs.modal", function() {
var editorId = getSnippetEditorId();
var snippetEditor = ace.edit(editorId);
snippetEditor.resize();
을 Firefox의 편집기에서 모든 편집기 텍스트가 선택됩니다. 커서를 움직이거나 클릭하여 선택을 제거 할 수 없습니다. 백 스페이스 또는 다른 키 (예 : 문자 또는 입력)를 눌러 텍스트를 지울 수 있습니다.
이것은 Chrome이나 IE에서 발생하지 않습니다.
codeEditor.on("focus", function() {
codeEditor.getSession().setValue(codeEditor.getSession().getValue());
codeEditor.clearSelection();
});
다른 내가 보일 것입니다 :
은 실험으로, 나는 또한 아무 소용이 코드를 추가? 비슷한 행동을 본 사람이 있습니까?
업데이트 :
나는 무한 루프에 호출되는 ace.js
의 onSelect
기능이있는 것으로 나타났습니다. 그것은 라인 (2061)에있다 : https://github.com/ajaxorg/ace-builds/blob/master/src-noconflict/ace.js#L2061 여기
함수의 코드입니다 :
var onSelect = function(e) {
if (copied) {
copied = false;
} else if (isAllSelected(text)) {
host.selectAll();
resetSelection();
} else if (inputHandler) {
resetSelection(host.selection.isEmpty());
}
};
파이어 폭스의 디버거에서 코드를 통해 걷는 보여줍니다 사실 때문에 선택 이벤트가 다시 발생 isAllSelected(text)
호출이 반환.
축소 된 ace.js에서이를 갱신하려면 'E (n)'(대소 문자 구분)의 첫 번째 발생을 찾아 'n.value && E (n)'로 바꾸십시오. (이 답변을 주셔서 대단히 감사합니다.) – mch
@mch 환영합니다 :) –
이 수정본을 공식 ace.js 코드에 추가하면 안됩니까? 이것은 2017이며 버그는 여전히 존재합니다. 답변 주셔서 감사합니다 DanielGabriel & @mch – k32y