Существует также другой метод - довольно хакерский - но он работает без перезагрузки.
Решение, которое я создал, работает в следующих браузерах:
- Firefox 4 +
- Safari 5+
- Chrome 6+
- Опера 11+
- IE 10+
- Android 2.3 +
Это действительно немного глупо, так что посмотрим, будете ли вы использовать его или нет. :)
Небольшое объяснение
Я использовал атрибут HTML5 autofocs
в поле <input>
. Поскольку это будет фокусировать ввод, оно должно попасть в окно просмотра. Для этого он перейдет к заданной позиции. Чтобы избавиться от выделенного контура и вообще не видеть ввод, необходимо установить несколько стилей. Но это по-прежнему заставляло Safari иметь один мигающий пиксель, поэтому я справился с диапазоном, который действует как наложение. Обратите внимание, что вы не можете просто использовать display: none
, так как это не вызовет автофокус (проверено только в Safari).
Демо
Попробуйте перед покупкой
Демонстрация будет работать только в Safari и Chrome. IE и Firefox не запускают автофокус в <iframe>
.
CSS
div.outer {
height: 100px;
width: 100px;
overflow: auto;
}
div.inner {
position: relative;
height: 500px;
width: 500px;
}
div.inner > input {
width: 1px;
height:1px;
position: absolute;
z-index: 0;
top: 300px;
left: 200px;
border:0;
outline:0;
}
div.inner > span {
width: 1px;
height:1px;
position: absolute;
z-index: 1;
top: 300px;
left: 200px;
background: white;
}
HTML
<div class="outer">
<div class="inner">
<input type="text" autofocus></input>
<span></span>
</div>
</div>