Я думаю, что у меня есть решение этой проблемы, хотя это, несомненно, хак (то есть, если Safari изменит способ реализации этой функции, он может перестать работать).Здесь показано с прикосновением jQuery:
$('.unimportant').live('blur', function(){
var olddisplay = this.style.display;
this.style.display = 'none';
this.clientLeft; // layout
this.style.display = olddisplay;
});
Демо (попробуйте ввести в поле «неважно», нажмите где-нибудь еще на странице, затем закройте окно).
Короче говоря:
- Скрыть вход
- Схема триггера
- Показать вход
Вы также можете изменить значение ввода, расположение триггера и вернуть его обратно.
Единственное ограничение здесь заключается в том, что очистка ввода должна выполняться явно.В этом случае он будет грязным до blur
.Это хорошо работает в моей ситуации, и, вероятно, во многих других, так как ввод будет защищен от случайного закрытия окна, пока что-то еще на странице не будет манипулировано (например, нажата ссылка).Вы можете запустить это на keyup
, если вы готовы жить с мерцанием точки вставки при каждом нажатии клавиши.
Я открыт для более чистых решений.