移动Safari - 自动对焦无法正常工作

时间:2015-08-20 18:53:47

标签: javascript jquery html5 mobile-safari

在iPhone上进行移动游猎...

在我继续前进并将其标记为无法解析之前......一旦页面加载,是否还要自动对焦输入字段?我不关心自动对焦何时被触发 - 我只是希望它是自动的而不是点击某处。我试过js,HTML5和jQuery =都失败了。我知道有100多个帖子,从后面的时候。我只是想确保没有办法做到这一点。

<input autofocus id="AutoFocusMe" type="text" placeholder="Email Address"/>

JS我试过了:

$("#AutoFocusMe").focus();

...

document.getElementById("AutoFocusMe").focus();

...

    if (!("autofocus" in document.createElement("input"))) 
{document.getElementById("AutoFocusMe").focus(); }

setTimeout(function() {
jQuery('#AutoFocusMe').focus();
}, 500);

立即将此添加到列表中......

document.getElementById('AutoFocusMe').click();

1 个答案:

答案 0 :(得分:0)

如何在加载窗口后检查autofocus是否为undefined,确保加载所有表单元素。

我的示例在codepen调试模式(无iframe)中运行

http://s.codepen.io/jonathan/debug/xwgWKe

您需要在远程服务器或本地服务器上运行此代码,而不是通过JSfiddle或CodePen 中的iframe运行。 JSfiddele和CodePen在iframe中运行代码。上面的示例在Codepen Debug模式下运行。所以它不会在iframe中运行代码。 iframe会阻止autofocus

// wait until all links, inputs, images are loaded
$(window).on("load", function(){

   if(document.createElement("input").autofocus === undefined) {
       $("[autofocus]").filter(":last").focus();
   }

});

如果autofocus属性为undefined,则使用属性选择器将焦点放在具有autofocus属性的最后一个输入上。

我在()load事件处理程序上使用jQuery的原因是为了确保事件侦听器一致地为跨浏览器触发。由于window.load无法跨浏览器一致地工作。