2015-04-13 4 views
4

Использование атрибута HTML5 «Автофокус» может быть действительно полезной вещью для веб-страниц. Однако использование - например, Firefox (37.0.1) на устройствах Android приводит к тому, что на экране отображается мягкая клавиатура.Предотвращение автофокуса HTML5 при отображении мягкой клавиатуры на небольших (мобильных) экранах

<input type="text" name="q" autofocus> 

Мягкая клавиатура занимает много места, поэтому я хотел бы предотвратить ее открытие. В то же время автофокус - очень полезная функция, которая нам нужна для обычных экранов/устройств.

Я попытался удалить атрибут «автофокус» на основе ширины экрана через jQuery на загрузке страницы, однако это слишком поздно. На данный момент браузер, по-видимому, уже принял этот атрибут и показывает мягкую клавиатуру:

$(function(){ 
    if (window.innerWidth < 600) 
     $('*[autofocus]').removeAttr('autofocus'); 
}); 

Любые предложения?

+0

Хммм, что это 'autofocus' делать? Может ли это быть каким-то образом воспроизведено? – Huey

+0

Я мог бы воспроизвести его с помощью JS/jQuery, но это, ну, не очень элегантно. Но это вариант, который я имею в виду. –

ответ

1

Попробуйте это, он работает на рабочем столе, я не тестировал его на мобильных устройствах. Удалить атрибут autofocus

<input type="text" name="q"> 

и JS

function setFocus() { 
    if (window.innerWidth > 600) 
     $("input[name=q]").focus(); 
} 
$(document).ready(function() { 
    setFocus(); 
}); 
+0

Это действительно работает, но я бы предпочел не вносить изменения в разметку. Если не появятся другие решения, я помечаю это как принятое позже. –

+0

Отлично работает. Тем не менее, я думаю, что лучше проверить событие ontouchstart в объекте Windows, а не ширину окон. Это потому, что разрешения растут довольно быстро, а Samsung S6 уже имеет большее разрешение, чем мой 27-дюймовый экран: -P –