2016-09-09 9 views
3

これは私がwinjsライブラリを使用せずにWindowsの携帯電話用のキープレスイベントを再度追加する必要があります私のmain.jsWinjSライブラリを使用せずにUniversal Windowsアプリケーションでボタンイベントを追加する方法はありますか?

(function() { 
"use strict"; 

//No need of WinJS 
var activation = Windows.ApplicationModel.Activation; 
var roaming = Windows.Storage.ApplicationData.current.roamingSettings; 

// For App Start Up 
Windows.UI.WebUI.WebUIApplication.addEventListener("activated", function (args) { 
    if (args.detail[0].kind === activation.ActivationKind.launch) { 
     if (roaming.values["currentUri"]) { 
      if (roaming.values["UserName"]) 
      { 
       localStorage.setItem("UserName", roaming.values["UserName"]); 
       window.location.href = roaming.values["currentUri"]; 
      } 
     } 
    } 
}); 

// For App Suspension 
Windows.UI.WebUI.WebUIApplication.addEventListener("suspending", function (args) { 
    roaming.values["currentUri"] = window.location.href; 
    roaming.values["UserName"] = localStorage.getItem("UserName"); 
}); 

// For Resuming App 
Windows.UI.WebUI.WebUIApplication.addEventListener("resuming", function (args) { 
    var roam = Windows.Storage.ApplicationData.current.roamingSettings; 
    if (roam) { 
     if (roam.values["currentUri"]) { 
      localStorage.setItem("UserName", roam.values["UserName"]); 
      window.location.href = roam.values["currentUri"]; 
     } 
    } 
}, false); 
// not working backpressed event 
Windows.UI.WebUI.WebUIApplication.addEventListener("backpressed", function (args) { 
    // to do 
}, false);})(); 

のですか? 誰も私を示唆することはできますか?

私のアプリでms-appx-webのコンテキストを使用しています。私はwinjsライブラリを使用したくない。

答えて

1

I need to add back key press event for windows phone without using winjs library?

backpressedイベントはWindows.Phone.UI.Input.HardwareButtonsなくWindows.UI.WebUI.WebUIApplicationに添付する必要があります。

あなたはHardwareButtons.BackPressedHardwareButtonsを参照している場合、あなたはbackpressedイベントがこのように使用されています:

var hardwareButtons = Windows.Phone.UI.Input.HardwareButtons; 
function onBackPressed(eventArgs) { /* Your code */ } 

// addEventListener syntax 
hardwareButtons.addEventListener("backpressed", onBackPressed); 
hardwareButtons.removeEventListener("backpressed", onBackPressed); 

そして、あなたは、単一ページのアプリケーションを作っていないからです。このイベントは、新しいページのすべてのJSコードに添付する必要があります。

更新:あなたがプログラムであなたの現在のデバイスをお知りになりたい場合は、以下を使用することができますif文:

if (deviceInfo.operatingSystem.toLowerCase() == "windowsphone") 
{ 
    //do your windows phone logic 
} else if (deviceInfo.operatingSystem.toLowerCase() == "windows") 
{ 
    //do your windows logic 
} 
+0

行 'Windows.UI.WebUI.WebUIApplication'が表示されます** JavaScriptランタイムエラー:デスクトップアプリケーションを実行すると、未定義またはnull参照**のプロパティ 'UI'を取得できません。ですから私はそれを解決する必要があります。 'WIndows.Phone'は未定義です。 – Sonali

+0

アプリの終了イベントはありますか? – Sonali

+0

nullエラーを再現できません。デモを共有できますか?アプリの終了イベントはありません。ただし、アプリが終了するたびに一時停止して終了します。したがって、サスペンド・イベントでロジックを実行できます。 –

0

私は、これはよく私のために働いthis-

var flag = Windows.Foundation.Metadata.ApiInformation.isTypePresent("Windows.Phone.UI.Input.HardwareButtons"); 

    if (flag) { 
     var hardwareButtons = Windows.Phone.UI.Input.HardwareButtons; 
     hardwareButtons.addEventListener("backpressed", onBackPressed); 
    } 

を使用!

関連する問題