PhoneGapアプリケーションにlogoutボタンを実装して、ユーザーを認証ページに戻します(フィールドがクリアされています)。 onclickイベントでアンカーを使用しているボタン:
<script type="text/javascript">
function doLogout() {
var backlen = history.length;
history.go(-backlen);
window.location.replace("index.html");
}
</script>
<a data-role="none" href="#" onclick="doLogout"></a>
しかし、それは機能しません。つまり、すでにフィールドが入力されている認証ページに戻るだけで、一歩戻ったように見えます。私はhistory.clear()について確信がありません。
<a data-role="none" href="index.html" onclick="javascript:history.clear();"></a>
私の問題はどこにあるのですか? PhoneGapでログアウトイベントを処理する別のソリューションがある場合は、それに従います。ありがとう
history.go
の呼び出しは無視されます。履歴にある項目よりも1つ前のステップに戻るためです。 length
プロパティには、現在のアイテムを含むアイテムの数があるため、たとえば、履歴に4つのアイテムがある場合、戻ることができるのは3ステップだけです。
最初のステップに戻るには、長さから1を引きます。
history.go(-(history.length - 1));
ただし、そのページ専用の新しいウィンドウを開いた場合にのみ、スタートページに戻ります。それ以外の場合は、ユーザーがそのウィンドウを使用してアクセスした最初のページに戻ります。
clear
オブジェクトにはhistory
メソッドはありません。
参照: https://developer.mozilla.org/en-US/docs/DOM/window.history
ブラウザの履歴はユーザーのものであり、ユーザーは何も削除できません。
私はPhoneGapを開発したことがありませんが、Webアプリケーションでは以下のコードを使用できます。
window.location.replace(url);
を試してください
リダイレクト後、前のページに移動する方法はありません。
onclick
属性を使用する場合、引用符で囲まれているのは、関数の名前だけではなく、実際のステートメントです。そう:
<a data-role="none" href="#" onclick="doLogout();"></a>
<!-- Note the (); ----------------------------^^^ -->
また、リンクをたどるデフォルトのアクションを防ぐために何もしていないので、ブラウザはhref
をたどります。これは#
で、現在のページの先頭に移動します。 return false;
を追加することで、(必要に応じて)これを防ぐことができます。
<a data-role="none" href="#" onclick="doLogout(); return false;"></a>
質問の2番目の部分を追跡することはできませんでしたが、2番目の例ではonclick
属性のjavascript:
が必要ない、または必要ないことに注意します。 URIが期待される場所(たとえば、アンカーのhref
)でのみ、この擬似プロトコルを使用します。 onXYZ
属性の内容は常にコードであり、URIではありません。
最後に、スタイリングで何かをしているのでない限り、これらのリンクはどちらも空であるため、クリックするのがかなり難しくなります。 :-)
使用:navigator.app.clearHistory();