Возможно переключить div на contenteditable="false"
на лету, как следствие запуска выбора в одном из них. Что-то вроде этого дает вам идею (используя JQuery):
$('div').bind("selectstart", function() {
$('div').attr("contenteditable", false);
});
Вот скрипка для демонстрации (тестируется только в Chrome).
Обратите внимание, что в примере со скрипкой первый Div ContentEditable получает фокус. Это позволяет вам печатать как обычно, но как только вы выделите что-либо, используя мышь или клавиатуру, вы увидите, что вы можете расширить выделение на элементы div как обычно.
Это, очевидно, нуждается в уточнении для работы с несколькими браузерами и возврата к contenteditable="true"
соответственно. Но я думаю, что подход верен.