2017-12-01 22 views
0

각도 웹 응용 프로그램에서 코드 미러를 사용하고 있습니다. 현재 사용자가 텍스트를 강조 표시 한 다음 강조 표시된 부분을 클릭하면 코드 미러는 선택한 영역의 복사본을 클립 보드에 저장합니다. 이것은 우리가 원하는 행동이 아닙니다. 텍스트를 선택 취소하는 일반적인 동작을 원합니다.클릭시 코드 복사본 복사 방지

마우스 클릭 이벤트를 catch하고 false를 반환하거나 codemirrorIgnore를 true로 설정하려고 시도했지만 작동하지 않았습니다. 또한 "LeftDown"에 대한 키 맵을 다시 정의하려고 시도했지만 기존 작업 이름이 정의 된 위치에 대한 정보를 찾을 수 없었습니다.

아무도 도와 줄 수 있습니까? 거짓은 아무것도 codemirrorIgnore을 설정하지 않았다 반환

$scope.codemirrorLoaded = function(_editor) { 
    _editor.on("mouseDown", function(cm, event) { 
     cm.codemirrorIgnore = true; 
     //also tried return false 
    } 
}; 

: 나는 또한 ui-codemirror="{ onLoad : codemirrorLoaded }"를 사용하여 온로드 기능을 사용하려고

$scope.editorOptions = { 
    lineWrapping: true, 
    lineNumbers: true, 
    smartIndent: true, 
    autoCloseTags: true, 
    cursorScrollMargin: 25, 
    styleActiveLine: true, 
    mode: "text/html", 
    theme: "default", 
    matchBrackets: true, 
    matchTags: { 
     bothTags: true 
    }, 
    extraKeys: { 
     "F11": function (cm) { 
      cm.setOption("fullScreen", !cm.getOption("fullScreen")); 
     }, 
     "Esc": function (cm) { 
      if (cm.getOption("fullScreen")) { 
       cm.setOption("fullScreen", false); 
      } 
     }, 
     //Don't know where "autocomple", "findPersistent" are defined so I can see what is available 
     "LeftClick": "LeftClick", 
     "Ctrl-Space": "autocomplete", 
     "Alt-B": "findPersistent", 
     "Ctrl-J": "toMatchingTag" 
    }, 
    viewportMargin: 10, 
    textWrapping: true 
}; 

다음과 같은 : 여기

는 내가 키 맵을 변경 시도 코드 true로 설정하면 왼쪽 클릭이 전혀 수행되지 않습니다.

+0

이미 가지고있는 코드와 함께 문제를 해결하려고 시도한 코드를 제공하는 것이 더 도움이됩니다. –

+0

좋아. 나는 월요일까지 기다려야 할 것이다. 감사. – markbernard

+0

@GhassenLouhaichi는 내가 시도한 코드 샘플을 추가했습니다. – markbernard

답변

0

이것이 Code Mirror의 버그임을 발견했습니다.

if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && 
    type == "single" && (contained = sel.contains(start)) > -1 && 
    (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) && 
    (cmp(contained.to(), start) > 0 || start.xRel < 0)) 
    leftButtonStartDrag(cm, e, start, modifier); 
else 
    leftButtonSelect(cm, e, start, type, modifier); 

드래그 앤 드롭이 다음 시작 드래그, 그것은 기본적으로 인을 사용하는 경우 이에 따라 : 다음 코드 거울 코드의 첫 번째 비트입니다. 그러나 다음 코드에서 :

// Start a text drag. When it ends, see if any dragging actually 
// happen, and treat as a click if it didn't. 
function leftButtonStartDrag(cm, e, start, modifier) { 

끌기가 없다면 클릭을 처리하십시오. 나는 그것을 고칠 수 있는지보기 위해 코드를 자세히 보지 않았지만 끌기가 클립 보드를 사용하기 때문에 클립 보드가 이미 지워지고 선택한 텍스트로 바뀝니다.

그래서이 문제를 방지하려면 드래그 앤 드롭을 사용 중지해야합니다.