【问题标题】:why iOS mobile cannot use focus()为什么iOS手机不能使用focus()
【发布时间】:2016-01-14 08:11:21
【问题描述】:

我正在尝试使用 javascript 函数 focus(),但它不适用于 safari mobile。我该如何解决这个问题?

<html lang="en">
   <head>
      <meta charset="UTF-8">
      <title>demo</title>
      <script type="text/javascript">
         window.onload=function() {
           document.getElementById('username').focus();
         }
      </script>
   </head>
   <body>
     <input type="text" id="username" >
     <input type="text" >
   </body>
</html>

【问题讨论】:

    标签: javascript html mobile-safari


    【解决方案1】:

    出于安全原因,iOS 不允许自动触发 .focus()

    【讨论】:

    • 此声明有任何官方参考资料吗?
    【解决方案2】:

    我在使用 Angular 应用时遇到了同样的问题,我通过一个非常简单的 hack 解决了它。

    对于初学者,您可能想要使用 jQuery;它为您明确了很多事情,并且或多或少地得到了完全支持。然后,尝试这样做:

    $( document ).ready( function() {
    
        setTimeout( $( '#username' ).focus(), 0 );
    
    });
    

    现在,我不知道它是如何工作的;也许是一些渲染问题。但它肯定有效。

    如果你想要 VanillaJS:

    window.onload = function() {
    
        setTimeout( document
                      .getElementById( 'username' ).focus(), 0 );
    
    }
    

    我不知道 VanillaJS 版本是否可以工作。

    【讨论】:

    • 只是好奇为什么这个答案被否决了?是因为没用吗?
    • 我自己也不知道。
    • 它不起作用。问题是您无法在没有用户交互的情况下以编程方式触发对 ios 设备的关注。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2023-03-05
    相关资源
    最近更新 更多