【问题标题】:Mobile Safari - Autofocus not working移动 Safari - 自动对焦不起作用
【发布时间】:2015-11-14 13:28:47
【问题描述】:

在 iPhone 上的移动 Safari 上...

在我继续并将其标记为无法解决之前...是否有在页面加载后自动聚焦输入字段?我不在乎何时触发自动对焦-我只希望它是自动的而不是单击某处。我试过 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();

【问题讨论】:

    标签: javascript jquery html mobile-safari


    【解决方案1】:

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

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

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

    您需要在远程服务器或本地服务器上运行此代码,而不是通过 JSfiddle 或 CodePen 的 iframe。 JSfiddele 和 CodePen 在 iframe 中运行代码。我上面的示例在 Codepen 调试模式下运行。所以它不会在 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 属性的最后一个输入上。

    我使用 jQuery on() load 事件处理程序的原因是为了确保跨浏览器一致地触发事件侦听器。由于window.load 不能跨浏览器始终如一地工作。

    【讨论】:

    • @RooksStrife 这在正常的服务器环境中确实有效。它不起作用的原因是由于 iframe 中加载了 jsfiddle。在这里,它在调试模式下使用 CodePen。 CodePen 调试模式在没有 iframe 的情况下运行代码。 s.codepen.io/jonathan/debug/xwgWKe?我还在我的远程服务器上进行了测试,它可以工作。
    猜你喜欢
    • 2011-09-11
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多