2013-04-18 2 views
4

내 사이트의 wysihtml5에 약간의 문제가 있습니다. 몇 가지 HTML 태그 만 허용하고 파서 규칙에서 밑줄을 제거하고 wysihtml5 라이브러리의 명령에 밑줄을 긋는 경우 CTRL (command) + U를 눌러 선택한 텍스트에 밑줄을 긋을 수도 있습니다. 이 행동을 없애기 위해 무엇을해야합니까? 조언을 주셔서 감사합니다.wysihtml5 - 밑줄 태그 비활성화 방법

+0

(우리는이 편집기에 대해 얘기하는 경우) 난을 제거하려고 내 버그 – Luke

+0

... – Droidik

답변

1

새로운 대답 : 내 업데이트 된 솔루션입니다. 다음과 같이 (추적 Ctrl 키를 누른 상태 및 added a keyup handler) I updated the existing keydown event handler :

// --------- Shortcut logic --------- 
var ctrlDown = 0; 

dom.observe(element, "keydown", function(event) { 
    var keyCode = event ? event.which : window.event.keyCode, 
    command = shortcuts[keyCode]; 
    if (1 == event.ctrlKey) { 
    console.log('Ctrl key pressed. Setting ctrlDown = 1.'); 
    ctrlDown = 1; 
    } 
    if (85 == keyCode && 1 == ctrlDown) { 
    console.log('Pressed "U" (keyCode 85), but Ctrl key still down. Don\'t fire!'); 
    return event.preventDefault(), !1; 
    } 
    if (1 == ctrlDown && !event.altKey && command) { 
    console.log('Shortcut Ctrl + keyCode ' + keyCode + ' triggered.'); 
    that.commands.exec(command), event.preventDefault(); 
    } 
}); 

dom.observe(element, "keyup", function(event) { 
    // note: "event.ctrlKey" doesn't work with keyup, use keyCode/which 
    if (17 == (event ? event.which : window.event.keyCode)) { 
    console.log('Ctrl key released. Setting ctrlDown = 0.'); 
    ctrlDown = 0; 
    } 
}); 

난 당신에게 a pull request at github을 보냈다.


원래 답 : 내가 Ctrl 키 + U 키보드 단축키를 사용하지 않도록 수행하기 위해 필요한 모든, 바로 가기가 wysihtml5-0.4.0pre.js에 라인 8494에서 개체에서 "U"(85)의 키 코드를 제거하는 것이었다.

변경

shortcuts = { 
    "66": "bold",  // B 
    "73": "italic", // I 
    "85": "underline" // U 
    }; 

shortcuts = { 
    "66": "bold",  // B 
    "73": "italic" // I 
    }; 

와 u는 편집기에서 바로 가기 + 더 이상 Ctrl 키를 사용할 수 없습니다.

또는 keydown 이벤트를 catch하고 Ctrl + u 바로 가기를 비활성화 (즉, 기본 동작을 방지) 할 수 있습니다. 같은 뭔가 :

// --------- disable ctrl+u shortcut for underlining texts --------- 
dom.observe(element, "keydown", function(event) { 
    if ((event.ctrlKey || event.metaKey) && 'u' == String.fromCharCode(event.which).toLowerCase()) { 
    // do something 
    }  
}); 
+0

그들을 https://github.com/xing/wysihtml5/issues에게 버그를 먹으 렴 85 바로 가기가 작동하지 않아 문제가 발생했습니다 (파서 규칙이 무시 됨). 그래, keydown을 잡는 것은 해결책 일 수 있습니다. 비슷한 점을 생각하고 있었기 때문에 코드를 약간 편집 했으므로 이제는 행복합니다. 글쎄, 고맙습니다. 100 건의 평판이 나옵니다 .- – Droidik

+0

덤프 질문 .. 85 단축키를 제거하면 편집기 페이지가 다시로드되었거나 JS 브라우저 캐싱을 피하기 위해 강제로 다시로드 해 보셨습니까? 나에게도 같은 일이 일어났다. 85 단축키 제거는 제 1 회 시도였습니다. 첫 번째 인스턴스에서 작동하지 않았을 때, 키 수신기를 시도하고 나중에 스크립트가 캐시되었다는 것을 깨달았습니다 (비록 페이지를 몇 번 리로드했지만). 어쨌든, 당신이 일하는 해결책을 찾았 기 때문에 기쁩니다. Grüße von der Schanze;) – eyecatchUp

+0

나는 항상 캐시를 제거하고 여러 브라우저에서 여러 번 테스트하므로 단축키를 제거해도 실제로 작동하지 않습니다. 그래, 나도 다행이야! 다시 한번 Danke für Ihre Hilfe! – Droidik