2017-04-11 3 views
1

バニラはJavaScript -Window.clickイベントは、IOSのサファリに発生しません - JavaScriptの唯一の

document.addEventListener("click", function(){ alert('click fired');}); 

角度2 +と - このメソッドの

@HostListener('window: click', ['$event']) 
     public iosSafariClick(e: any): void { 
     alert('event fired'); 
     } 

なしIOSサファリに取り組んでいませんiPadで。

私はいくつかのボタン、ハイパーリンク、または任意の実用的なアイテムをクリックしない限り

クリックイベントは発生しません。

私の目標は、 'div要素'の上にぼかしイベントを発生させることです。

これを行うには、HTMLボディで発生したクリックイベントが「div要素」でないかどうかを確認する必要があります。

HTML>

<html> 
    <body> 
    <div id= 'menu'>123...</div> 
    </body> 
</html> 

角度成分> typescriptです>

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

このハードルを克服するためにJavaScriptや角度を使用してどのような方法がありますか?

+0

誰かがこの問題の解決策を持っていますか? –

答えて

1

タッチベースのデバイスを使用する場合、ブラウザに発行されるイベントは異なります。 これはまた、開発者に正確なユースケースを提供し、その周りに設計して開発します。

マウスがないので、クリックイベントは発生しません。

MDNから入手: タッチベースのユーザーインターフェイスに対して高品質なサポートを提供するために、タッチイベントは、タッチスクリーンまたはトラックパッドの指(またはスタイラス)アクティビティを解釈する機能を提供します。

使用してみてください: document.addEventListener('touchstart',() => console.log('touch called'));

あなたはいつも代わりに() => {}

function() {}を使用することを選ぶことができますが、完全な詳細情報を参照してください:https://developer.mozilla.org/en/docs/Web/API/Touch_events

+0

試したタッチがうまくいかなかった。しかし、TouchStartはうまく動作します。ありがとう ! –

関連する問題