菜鸟教程小白 发表于 2022-12-11 18:55:11

javascript - 当我使输入可见时,强制 iPhone 键盘出现在 Safari 窗口上


                                            <p><p>从几年前 StackOverflow 中关于这个主题的许多评论来看,这可能根本不可能。但是,如果我遗漏了什么,情况如下:</p>

<p>我有一个 htmlCanvas 元素。当用户点击它时,我使输入元素可见。理想情况下,输入获得焦点,在移动设备上会弹出原生键盘。</p>

<p>这就是在 Android 设备上发生的事情。但是,当 Safari 上的 iPhone 用户点击 Canvas 时,输入会出现但它没有获得焦点,并且 native 键盘也不会出现。用户必须点击输入元素才能显示 native 键盘。</p>

<p>有没有人有办法让键盘在 iPhone 上显示而无需最后一次额外的点击?</p>

<p>这是一个测试用例:</p>

<pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;script src=&#34;https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js&#34;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id=&#34;box&#34; style=&#34;width:100px;height:100px;position:relative;background-color:blue&#34;&gt;&lt;/div&gt;
    &lt;div id=&#34;holder&#34;&gt;
      &lt;form&gt;
            &lt;input id=&#34;in&#34;&gt;
      &lt;/form&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;script&gt;
$(function() {
    $(&#34;#holder&#34;).hide();
    $(&#34;#box&#34;).mousedown(function() {
      $(&#34;#holder&#34;).show({complete:function() {$(&#34;#in&#34;).focus();}});
    });
});
&lt;/script&gt;
&lt;/html&gt;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>找到了有效的策略组合。不知道为什么,但是如果我在“touchstart”而不是“mousedown”中处理点击,并添加一个对“focus”的额外调用,IOS 设备会授予我焦点和 native 键盘:</p>

<pre><code>$(&#34;#box&#34;).on(&#34;touchstart&#34;, function(e) {
    $(&#34;#holder&#34;).show({complete:function() {$(&#34;#in&#34;).focus();}});
    event.stopPropagation();
    event.preventDefault();
    $(&#34;#in&#34;).focus();
});
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - 当我使输入可见时,强制 iPhone 键盘出现在 Safari 窗口上,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/42163419/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/42163419/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - 当我使输入可见时,强制 iPhone 键盘出现在 Safari 窗口上