У меня есть немного кода здесь, который хорошо работает в веб-превью TextMate, но Safari делает то, что я не знаю, как обойти ...
$(document).ready(function(){
$('*[contentEditable="true"]').focusin(function(){
var _self = this;
var isCtrl = false;
// Bind events.
$(window).keyup( function(e) {
if(e.which==17 || e.which == 91) isCtrl=false;
});
$(window).keydown( function(e){
if(e.which==17 || e.which == 91) isCtrl=true;
if(isCtrl) {
console.log(e.which);
switch(e.which) {
case 66: doCommand('bold');
break;
case 67: doCommand('cut');
break;
case 73: doCommand('italic');
break;
case 86: doCommand('paste');
break;
default: break;
}
return false;
}
});
}).focusout(function(){
$(window).unbind();
});
});
Когда *Нажмите 1004 * или command + i
, мы должны получить событие, чтобы сделать текст курсивом в области contentEditable
.Проблема в том, что в то время как другие стандартные символы ASCII / Alpha будут срабатывать, B, а я нет.Теперь, если я preventDefault()
, все равно ничего.
Мне нужна свежая пара глаз на это.Кто-нибудь еще может найти способ обойти это, что не помешает мне печатать еще?
Спасибо.
Редактировать Чтобы уточнить, да, это отлично работает с другим текстомэлементы ввода (<textarea>
, <input>
и т. д.).Это конкретно относится к contentEditable
.
Также сюда включено doCommand
:
doCommand = function(cmd) {
document.execCommand(cmd, null, null);
}