web-dev-qa-db-ja.com

MS EdgeでタッチAPI(例:touchstart)が機能しない

私のアプリケーションはTouch APIを使用して、JavaScriptのタッチイベントを検出しています。例:

$(".element").on("touchstart", function(event){
    alert("TRUE");
});

これは、AndroidまたはiOSのような任意のブラウザーを備えた任意のタッチデバイスで機能しますが、接続されたキーボードの有無にかかわらず、Windows 10タブレットのMS Edgeでは機能しません。APIはサポートされているようです: 互換性リスト 。ただし、私はテストしました:'ontouchstart' in windowこのデバイスではfalseを返します。さらにmousedownは解雇されたようです。

ここで何が起こっているのですか? Windows 10タブレットでタッチイベントを発生させるにはどうすればよいですか?タッチデバイスだけのイベントを続けたいです。ポインターイベントAPIへの切り替えには、デスクトップデバイスも含まれますが、それは私が望んでいることではありません。

17
dude

タッチAPIの場合は、Edgeでフラグをアクティブにする必要があります。アドレスバーにabout:flagsと入力し、Enterキーを押します。タッチセクションでは、対応するドロップダウンでタッチイベントを有効にすることができます

17
t.ouvre

カスタムタッチ処理を有効にしましたか?これは次のcssスニペット(bodyタグまたはgesturesのコンテナーのみ)で実行できます。

-ms-touch-action: none;

次に、タッチAPIはWebkitの機能です(CanIuseにエラーがある可能性があります)。 IEおよびEdgeには、Pointer APIと呼ばれる同様の機能があります。ただし、次のようなポリフィルライブラリを使用できます: https://github.com/CamHenlin/TouchPolyfill

5
t.ouvre

pointerdownイベントを使用してみてください。いくつかの(もっと) 情報 。ご覧のとおり、touchstartはEdgeによってトリガーされますが、キーボードが接続またはペアリングされていない場合、touchstartなどのすべての構成ではトリガーされません。

0
Shanoor