私の質問は、window phone 8 で phonegap 2.3 を使用してアプリケーションを終了する方法です。
「navigatior.app.exit()」を使用しましたが、「navigatior.app」が未定義であることを示しています。
3 に答える
ネイティブハッキングを必要としない解決策を見つけたと思います..
page1.html から page2.html に移動し、次に page1.html に戻るリンクをたどる Phonegap/cordova アプリがある場合、標準の戻るボタンの動作ではアプリが終了しません。
ページ 1 >> ページ 2 >> ページ 1 — Windows Phone は、アプリを終了する代わりにページ 2 に移動します。これは予想される動作ですが、文書化が不十分です..
とにかく、私は何年にもわたって検索しましたが、私に合った修正が見つかりませんでした..
これをどのように修正したかについてのTLDRは、JS値を使用して現在のページを追跡することです。インデックスページにいる場合は、履歴をリセットしてから、ネイティブの戻るボタン機能を起動させます..
あなたが持つことができるpage1.htmlのIE..
var currentPage = "index";
次に、 app.deviceready 関数に..
if(currentPage == "index"){
history.go(-(history.length-9999));
document.addEventListener("backbutton", handleBack, true);
}else{
document.addEventListener("backbutton", handleBack,
false);
}
function handleBack(){
// handle other logic here such as handling the back events from page2 to page1..
}
ここでの本当の魔法は history.go(-(history.length-9999)) で、これは基本的に履歴スタックにリセットを指示します。また、addEventListener の true ステートメントにより、元の登録済みイベントを起動できます (ネイティブの [戻る] ボタン)。
とにかく試してみて、うまくいくかどうか教えてください。
protected IsolatedStorageSettings UserSettings
{
get
{
return IsolatedStorageSettings.ApplicationSettings;
}
}
void OnAppExit(object sender, EventArgs e)
{
UserSettings.Remove("sessionStorage");
UserSettings.Save();
}
private void Page_BackKeyPress(object sender, CancelEventArgs e)
{
if (_browserHistoryLength > 1)
{
_phoneGapView.Browser.InvokeScript("eval", "history.go(-1)");
_browserHistoryLength -= 2;
e.Cancel = true;
}
else
{
//to exit app
Application.Current.Exit += new EventHandler(OnAppExit);
}
}
Cordova フレームワークでプラグインが定義されていない場合、Navigator.app.exit()は機能しません。Exit メソッドを機能させるには、独自のプラグインを作成する必要がある場合があります。回避策として、バック キー ハードウェア イベントを Cordova.xaml.cs で処理できます。アプリケーションを終了するには、次のように記述します **
Application.Current.Terminate();
ハードウェアの戻るボタンを押すと、アプリケーションが終了します。