戻るボタンを表示するかどうかを決定するために、前のページ (リファラーなど) を特定しようとしています。
を確認しようとしまし$('.current').data('referrer')
たが、常に設定されているとは限りません。実際には、設定されていないことがよくあります。history.previous
また、document.referrer
設定されていないようです。
誰かがこれについて私に教えてもらえますか?
リファラーを使用して同じ問題に苦労してきましたが、それはわかりませんでした。jqtouch.jsの変更を強制しない次の解決策を思いつきました
$('body>div').bind('pageAnimationStart', function(e, data) {
if(data.direction === 'out') {
alert('referrer is : ' + e.currentTarget.id);
}
});
$('body>div') セレクターは、ボディの直接の子であるすべての div を選択する必要があります。これは、jqtouch ではすべてのページ定義です。currentTargetId の pageAnimationStart によって返されるイベントで、元のページの名前を見つけました。
セレクターをさらに制限できるかどうか、また現在のページを取得する方法があるかどうかを教えていただければ幸いです。
私はこの道をたどりたくありませんでしたが、私が見つけることができる唯一の実行可能な解決策は、hist
jQTouch が閲覧履歴を保持する内部変数 (つまり ) です。そこで、jqouth.js (リビジョン 146) に次の変更を加えました。
プライベート関数セクションの直前の 256 行目あたりに、次を挿入します。
function getHistory() { return hist; }
の直前の 625 行あたりにsubmitForm: submitForm
、以下を挿入します。
getHistory: getHistory,
次に、次のような方法で閲覧履歴を確認できます。
var previousPageID = jQT.getHistory()[1].id;
1 つの注意点は、履歴オブジェクトを誤って操作しないように注意する必要があることです。
編集:
作成者は、 2010 年 10 月 14 日のバージョン以降、内部履歴オブジェクトを公開しているため、直接アクセスできますjQT.hist
。
うーん...コメントできないので、これはjqtouch.jsを変更するというウィリアムの答えに関するものです。
簡単に言えば次のようになると思います。
hist: hist,
どこ
getHistory: getHistory,
配置されます。
そして、関数を追加する必要はありません。関数ではなく履歴自体にアクセスしているため、丸括弧は必要ないことに注意してください。
繰り返しますが、これは実際には古いバージョンの jqtouch にのみ適用されます。