내 사이트의 wysihtml5에 약간의 문제가 있습니다. 몇 가지 HTML 태그 만 허용하고 파서 규칙에서 밑줄을 제거하고 wysihtml5 라이브러리의 명령에 밑줄을 긋는 경우 CTRL (command) + U를 눌러 선택한 텍스트에 밑줄을 긋을 수도 있습니다. 이 행동을 없애기 위해 무엇을해야합니까? 조언을 주셔서 감사합니다.wysihtml5 - 밑줄 태그 비활성화 방법
답변
새로운 대답 : 내 업데이트 된 솔루션입니다. 다음과 같이 (추적 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
}
});
그들을 https://github.com/xing/wysihtml5/issues에게 버그를 먹으 렴 85 바로 가기가 작동하지 않아 문제가 발생했습니다 (파서 규칙이 무시 됨). 그래, keydown을 잡는 것은 해결책 일 수 있습니다. 비슷한 점을 생각하고 있었기 때문에 코드를 약간 편집 했으므로 이제는 행복합니다. 글쎄, 고맙습니다. 100 건의 평판이 나옵니다 .- – Droidik
덤프 질문 .. 85 단축키를 제거하면 편집기 페이지가 다시로드되었거나 JS 브라우저 캐싱을 피하기 위해 강제로 다시로드 해 보셨습니까? 나에게도 같은 일이 일어났다. 85 단축키 제거는 제 1 회 시도였습니다. 첫 번째 인스턴스에서 작동하지 않았을 때, 키 수신기를 시도하고 나중에 스크립트가 캐시되었다는 것을 깨달았습니다 (비록 페이지를 몇 번 리로드했지만). 어쨌든, 당신이 일하는 해결책을 찾았 기 때문에 기쁩니다. Grüße von der Schanze;) – eyecatchUp
나는 항상 캐시를 제거하고 여러 브라우저에서 여러 번 테스트하므로 단축키를 제거해도 실제로 작동하지 않습니다. 그래, 나도 다행이야! 다시 한번 Danke für Ihre Hilfe! – Droidik
(우리는이 편집기에 대해 얘기하는 경우) 난을 제거하려고 내 버그 – Luke
... – Droidik