В Chrome отмена не работает должным образом для элемента ввода после программного изменения содержимого
В Chrome я заметил, что отмена не работает должным образом для элемента ввода после программного изменения содержимого элемента. Хотя я получаю разные варианты поведения для разных браузеров, они не так плохи, как Chrome.
FF20 good
IE9 some support (undo stack cleared when input loses focus)
Safari5 some support (undo stack cleared when input loses focus)
Chrome26 unreliable
Например, скрипт, который обрезает пробелы (см. Также jsfiddle ниже)
введите несколько пробелов перед "привет!",щелкните за пределами элемента вводанажмите на элемент ввода и нажмите Ctrl-Zтеперь текст пропал (в чоме)
<input type="text" id="input1" value="hello!">
document.getElementById("input1").addEventListener('blur', function(evt){elementLosesFocus(evt, this);}, false);
function elementLosesFocus(evt, caller)
{
caller.value = caller.value.trim();
}
Я думаю, что лучшее, на что я могу надеяться, - это способ как-нибудь очистить историю отмен ввода, когда он теряет фокус (как в случае с IE и Safari).