1

HTML 5 と JavaScript を使用して、Windows 8 Metro スタイル アプリ用のアプリを 1 つ作成しています。アプリの起動時に、それがタッチ ベースのプロセスなのか、マウス ベースのプロセスなのか (スマートフォンまたはデスクトップ コンピューター) を確認する必要があります。

私は次のことを試しました。

1) 以下の通り、 http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.input.pointerdevicetype.aspx

しかし、関数 getPointerDeviceType(pdt) で「pdt」として何を渡すかがわかりません

いろいろ試してみましたが、「未定義」しか返されません。

2)Modernizr jsフレームワークを試して、次のコードを見つけました

    if (Modernizr.touch){
       // bind to touchstart, touchmove, etc and watch `event.streamId`
    } else {
       // bind to normal click, mousemove, etc
    } 

しかし、「Modernizr」の最新の js コードを挿入すると、appendchild コマンドでセキュリティ エラーが発生します。「0x800c001c - JavaScript ランタイム エラー: 動的コンテンツを追加できません」のようなもの</p>

条件に基づいて、タッチベースおよびマウスベースでアプリを実行するためのコードを実行できるようにする方法を教えてください。

4

2 に答える 2

1

ちょうどそれを解決しました。他の人に役立つことができます。

適用する必要があるcssを見つける必要がある次のコードを配置します。

    helloButton.addEventListener("MSPointerDown", buttonClickHandler, false);

関数は次のとおりです。

    function buttonClickHandler(eventInfo) {

        if (eventInfo.pointerType == eventInfo.MSPOINTER_TYPE_TOUCH) {
            // Do something for touch input only
            console.log('Touch');
        } else {
            // Do something for non-touch input
            console.log('Mouse');
        }
    }

条件ごとにコードを設定できます。

于 2012-08-24T12:57:52.233 に答える
0

アプリが実行中に 1 つの入力タイプしか持たないというあなたの仮定は悪いものです。私は常にマウス、キーボード、およびデバイスのタッチを切り替えます。

それは述べた:

  1. Modernizr を動的に追加する場合は、動的に追加するのではなく、HTML にスクリプト タグとして Modernizer を含めるだけです。
  2. Windows.Devices.Input.PointerDevice.GetPointerDevices();を使用してデバイスを取得し、提供したリンクの機能を使用して、どのデバイスがタッチをサポートしているかを確認する必要があります。(詳細はこちら
  3. イベント オブジェクトのpointerType プロパティを調べることで、特定の入力イベントがどのタイプのデバイス (onmspointerup など) に対するものであったかを検出できます。
于 2012-08-23T13:13:14.803 に答える