Не существует простого способа сделать это, динамически настраивая атрибут readonly текстовой области onfocus, onblur, onselect и т. Д., В то же время всегда получая событие onselect.
Если ваша цель - убедиться, что пользователи не могутредактировать / манипулировать текстовой областью, тогда я, вероятно, просто оставил бы текстовую область как не предназначенную только для чтения (для получения событий выбора), но заблокировал бы весь пользовательский ввод внутри нее, используя protectDefault () для событий ввода, например:
var ta = document.createElement('textarea');
// prevent user input
ta.addEventListener('cut', function(e) { e.preventDefault(); }, false);
ta.addEventListener('copy', function(e) { e.preventDefault(); }, false);
ta.addEventListener('paste', function(e) { e.preventDefault(); }, false);
ta.addEventListener('keydown', function(e) { e.preventDefault(); }, false);
// listen for user selections
ta.addEventListener('select', function() {
// function logic...
}, false);