2013-04-18 43 views
4

我的網站上有一個小小的wysihtml5問題。我想只允許少數html標記,如果我從解析器規則中刪除下劃線,並且甚至可以從wysihtml5庫中下劃線命令,我仍然可以按CTRL(命令)+ U使選定文本下劃線。我該怎麼做才能擺脫這種行爲? 感謝您的任何建議。wysihtml5 - 如何禁用下劃線標記

+0

那是一個錯誤,告訴他們https://github.com/xing/wysihtml5/issues(如果我們談論這個編輯器) – Luke

+0

這是我的錯誤... – Droidik

回答

1

最新回答:這是我更新的解決方案。我updated the existing keydown event handler(和added a keyup handler跟蹤CTRL按下狀態)如下:

// --------- 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鍵鍵盤快捷鍵,是刪除鍵代碼爲「U」(85)從快捷鍵在行8494中wysihtml5-0.4.0pre.js對象。

變化

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

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

,您將不再能夠使用Ctrl +在編輯器中ü快捷方式。

或者,您可以捕獲keydown事件並禁用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

我試圖刪除85快捷方式,它不起作用,所以這就是我創建該問題的原因(+它忽略瞭解析器規則)。 是的,捕捉keydown可能是解決方案,我正在考慮類似的東西,所以我編輯了一下你的代碼,現在我很開心。好吧,非常感謝你,我的名聲100 :-) – Droidik

+0

轉儲問題..當你刪除85快捷方式,你剛剛重新編輯頁面,或者你試圖強制重新加載,以避免JS瀏覽器緩存?對我來說,情況也是如此。 85快捷鍵的移除是我第一次嘗試。當它沒有在第一個實例中工作時,我嘗試了關鍵的偵聽器,後來才意識到腳本被緩存了(儘管我重新加載了這個頁面幾次)。無論如何,很高興你找到了一個工作解決方案Grüßevon der Schanze;) – eyecatchUp

+0

我總是刪除緩存並在不同的瀏覽器中測試幾次,所以刪除快捷方式對我來說真的不起作用。 是的,我也很高興它的作品! 再次,DankefürIhre Hilfe! – Droidik