2010-08-25 2 views
1

Я вытягиваю свои волосы, пытаясь понять, как лучше всего решить эту проблему. Возможно, кому-то это понравится.CTRL-A внутри contentEditable div в Firefox выбирает сам div

У меня есть div с contentEditable = "true", который отлично работает практически для всего. Одно исключение находится внутри Firefox, когда пользователь использует CTRL-A для выбора всего, а затем для копирования/вставки. Операция select включает теги для самого div! Насколько я смог найти, эта ошибка, предположительно, была исправлена ​​Mozilla, но это просто неверно. Div просто постоянно вставлен внутри себя.

Я изучил редактирование буфера обмена, как только пользователь скопировал его, но Firefox не кажется слишком дружелюбным к этому, если вы не используете flash, что не очень желательно. Я также думал о том, чтобы поймать оскорбительные теги на другом конце, когда пользователь делает вставку, но события вставки помещают фактический текст в div после завершения обработчика событий javascript. Есть ли способ редактировать вставляемый текст перед тем, как это произойдет?

+0

Не уверен, что это работает, но вы не можете попробовать onchange = "checkfordivs()" в div, в котором checkfordiv - это функция JS, которая запускается после изменения содержимого div? –

ответ

2

На самом деле это проблема браузера FireFox. Для устранения проблемы вы можете использовать следующую функцию.

function disableCtrlKeyCombination(event){ 
    var keyCode = event.keyCode; 
    if (event.ctrlKey && keyCode==86) { //CTRL+V 
     event.preventDefault(); 
     document.getElementById("divId").textContent = system.getClipboard().getData("text"); 
     return false; 
    } else if (event.ctrlKey && keyCode==67) { //CTRL+C (Copy) 
     event.preventDefault(); 
     system.getClipboard().setData("text",document.getElementById("divId").textContent); 
     return false; 
    } else { 
     return true; 
    } 
} 

Примечание: Это будет работать только в Firefox. В других браузерах он отлично работает по умолчанию.