2015-10-23 10 views
14

私のアプリケーションはTouch APIを使用してJavaScriptのタッチイベントを検出しています。例:Touch API(例:touchstart)がMS Edgeで動作しない

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

これは、AndroidまたはiOSのような任意のブラウザで任意のタッチデバイス上で動作します、しかし、それはconntectedキーボードの有無にかかわらずWindowsの10のタブレット上でMSエッジでは動作しません。 APIがサポートされているようです:Compatibility list。しかし、私はテストしました:'ontouchstart' in windowこれはこのデバイスでfalseを返します。さらにmousedownが解雇されるようです。

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

+0

こんにちは、問題の進展を管理できましたか? –

+0

いいえ、実際には私はまだ解決策を待っていて、解決策を見つけることはできませんでした。誰も答えを返す人がいなければ、唯一の選択肢はマウスイベントを聞くことだと思います。 – dude

答えて

12

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

+0

私は新年にこれをチェックします。 – dude

+0

実際、このプロパティは無効になっています。私はなぜそれが無効になったのかわからないが、それを起動した後、タッチイベントが正しく発射されている。おそらくWindows 10のアップグレードの問題です... – dude

+0

FYI - これを実行し、スタイルタグを追加する必要がありました:-ms-touch-action:none; 'あなたの他の答えを – thab

0

pointerdownイベントを使用してみてください。いくつか(多く)more information。ご覧のとおり、touchstartはエッジによってトリガーされますが、すべての構成では発生しません。例えば、キーボードがアタッチ/ペアリングされている場合は、touchstartはありません。

+0

はい、キーボードが接続されていなければ、 '' 'touchstart'''イベントは起動しません。また、私はこのイベントをデスクトップデバイスではなくタッチデバイスだけにしたいと思います(Pointer APIの場合)。 – dude

+0

ブルートゥースキーボードですか?ペアを組んだことがイベントをトリガーしないのに十分であるように思えば、それはかなりばかです。 – Shanoor

+0

ドッキングステーションが付いたASUSタブレットがあります。ドッキングステーションはキーボードを含む。だから私はドッキングステーションからそれを切断する場合、私はそれを検出する必要がある "ネイティブ"タッチタブレットに期待しています。 – dude

-1

私が知っているように、エッジのタッチイベントに問題はありません。

「touchstart」イベントリスナーを追加するには、ネイティブaddEventListenerメソッドを使用してください。たぶん、jQueryが問題を引き起こすかもしれません。

+0

しかし、私は夕方にこれを試してみましょう。なぜなら、 '' windowの '' ontouchstart 'は '' false'を返すからです。私はそれについて幸運を感じません。 – dude

+0

私はこのフィドルhttp://jsfiddle.net/4x67cfyz/2/で試しました。ただし、動作しません。 – dude

3

カスタムタッチ操作を有効にしましたか?あなたは(bodyタグやgeasturesのためだけの容器に)次のCSSスニペットでそれを行うことができます。

-ms-touch-action: none; 

次に、タッチAPIは、WebKitの機能(多分CanIuseにエラーがある?)です。 IEとEdgeには、Pointer APIとして知られている同様の機能があります。しかし、次のようなpolyfillライブラリを使用することができます。

+0

あなたはこのCSSで**タッチアクションを無効にします**。すでに触れたように、タッチイベントはサポートされています。http://caniuse.com/#search=touchを参照してください。私はマウスイベントをサポートしたくありません。これはPointer APIの事実です。私もこれについて説明しました。 – dude

+1

@julmot、それは間違っています。カスタムジェスチャー処理を有効にするには、ms-touch-actionをnoneに設定する必要があります。これがなければ、ブラウザはデフォルトの動作(スクロール処理、パン、ピンチ&ズーム)を使用します。カスタムジェスチャーを作成して(Pointer APIを使用する場合)、ms-touch-actionをnoneに設定する必要があります。 Edgeの最後のバージョンでは、「-ms-touch-action」を「touch-action」に置き換える必要があります。私を信じて、PointerMoveイベントをタッチアクションのあるページの本文に使用して、何も何もしないようにしてください。あなたは私が意味する事実を見るでしょう。 –

+0

@julmot、touch APIの場合は、Edgeのフラグを有効にする必要があります。url入力でabout:flagsと入力します。 Touchセクションでは、対応するドロップダウンでタッチイベントを有効にすることができます。 –

関連する問題