CTRL-A внутри div contentEditable в Firefox выбирает сам div - PullRequest
1 голос
/ 25 августа 2010

Я вырывал свои волосы, пытаясь найти лучший способ решить эту проблему.Возможно, кому-то будет весело с этим.

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

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

1 Ответ

2 голосов
/ 10 марта 2011

На самом деле это проблема браузера 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. В других браузерах по умолчанию работает нормально.

...