2012-08-23 24 views
1

我正在爲使用HTML 5和JavaScript的Windows 8 Metro風格應用程序創建一個應用程序。我需要在應用程序啓動時查找它是基於觸摸的過程還是基於鼠標的過程(智能手機或臺式計算機)。Windows 8 metro風格的應用程序 - 找到基於鼠標或觸摸的執行

我嘗試了以下的事情。

1)按以下, http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.input.pointerdevicetype.aspx

,但我們不知道該怎麼作爲「PDT」傳遞函數getPointerDeviceType(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運行時錯誤:無法添加動態內容」。

任何人都可以請告訴我們如何實現,以便根據條件,我們可以執行基於觸摸的代碼和基於鼠標的應用程序執行。

回答

0

您認爲應用程序在執行期間只有一種輸入類型是一種糟糕的做法 - 我始終在鼠標,鍵盤和觸摸設備之間切換。

這說明:

  1. 如果要動態地添加Modernizr的,只是包括現代化主義作爲你的HTML的腳本標籤,而不是動態添加
  2. 您需要使用Windows.Devices.Input.PointerDevice.GetPointerDevices();來獲得設備,然後使用您提供的鏈接中的功能查看哪些支持觸摸。 (詳細信息here
  3. 您可以通過查看事件對象上的pointerTypeproperty來檢測特定輸入事件適用於哪種類型的設備(例如,onmspointerup等)。
+0

感謝您的回答。實際上我想要做的是基於觸摸類型即觸摸屏或鼠標觸摸,想要加載CSS。對於鼠標的基礎觸摸,我想加載額外的CSS ... –

+0

我試過2和3,但他們給錯誤。我基本上在理解流程中遇到問題。爲了我的目標,您能否請發送確切的代碼或一些演示,以便能夠得到它。 –

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'); 
     } 
    } 

你可以設置你的代碼爲每個條件。

相關問題