菜鸟教程小白 发表于 2022-12-12 13:18:32

javascript - Window.click 事件不会在 IOS Safari 上触发 - 仅限 JavaScript


                                            <p><p><strong>原版 javascript -</strong> </p>

<pre><code>document.addEventListener(&#34;click&#34;, function(){ alert(&#39;click fired&#39;);});
</code></pre>

<p><strong> Angular 为 2 + -</strong> </p>

<pre><code> @HostListener(&#39;window: click&#39;, [&#39;$event&#39;])
      public iosSafariClick(e: any): void {
         alert(&#39;event fired&#39;);
      }
</code></pre>

<p>此方法在 iPad 上的 IOS safari 上均无效。</p>

<p>除非我点击某个按钮、超链接或任何可操作的项目,否则不会触发 <strong><em>Click</em></strong> 事件。</p>

<p>我的目标是在“div 元素”上触发 <strong><em>blur</em></strong> 事件。</p>

<p>为此,我试图检查是否在 HTML 正文上触发了任何点击事件,并检查它是否在“div 元素”上。</p>

<p><strong>HTML ></strong></p>

<pre><code>&lt;html&gt;
&lt;body&gt;
    &lt;div id= &#39;menu&#39;&gt;123...&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p><strong>Angular 组件 >typescript></strong> </p>

<pre><code> @HostListener(&#39;window: click&#39;, [&#39;$event&#39;])
   public iosSafariClick(e: any): void {
   if(e.target.id !== &#39;menu&#39;){
       this.menu = false;// to close menu
   }      
   }
</code></pre>

<p>有没有办法使用 javascript 或 Angular 来克服这个障碍?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>使用基于触摸的设备时,向浏览器发出的事件是不同的。
它还为开发人员提供了准确的用例,以便围绕其进行设计和开发。</p>

<p>我会假设既然没有<em>鼠标</em>那么就不会有点击事件。</p>

<p>取自 MDN:
为了为基于触摸的用户界面提供高质量的支持,触摸事件提供了解释触摸屏或触控板上的手指(或触控笔)事件的能力。</p>

<p>尝试使用:
<code>document.addEventListener('touchstart', () => console.log('touch called'));</code></p>

<p>您始终可以选择使用 <code>function () {}</code> 而不是 <code>() => {}</code></p>

<p>查看完整详情:<a href="https://developer.mozilla.org/en/docs/Web/API/Touch_events" rel="noreferrer noopener nofollow">https://developer.mozilla.org/en/docs/Web/API/Touch_events</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - Window.click 事件不会在 IOS Safari 上触发 - 仅限 JavaScript,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43335183/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43335183/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - Window.click 事件不会在 IOS Safari 上触发 - 仅限 JavaScript