2011-03-11 8 views
4

a:visitedのスタイルはJavaScript経由でリクエストされたリンクでは動作しないことに気付いています。しかし、標準的なユーザークリックでは、まったく同じリンクがすぐに訪問したときに登録され、その後の更新で登録されます。これがjQuery Mobile(私が最初に遭遇した場所)に固有のものか、それとも私が知らなかったブラウザの制限であるかどうかは分かりません。AJAXのリンクが検出されないA:訪問済み

+1

コードを教えてください。私は、その事故で「間違っている」と誤っている可能性があると推測しています。 falseが返されるため、デフォルトアクションは防止され、実際にリンクを訪問したように登録されていません。 –

答えて

2

履歴と訪問済みリンクのスタイリングを使用する場合は、おそらくlocation.hashを変更する必要があります。

visited linkのスタイル設定は、訪問されたリンクベースの閲覧履歴のプライバシーの脆弱性が、Did You Watch Pornウェブサイトで一般的になった後、ブラウザ間でやや矛盾しています。

+0

私はセレクタが知っています:visitedはCSS3から削除されましたが、古典的な動作はまだそこにあるはずです。そして、はい、location.hashが変更されます(前後のナビゲーションは正常に動作します)。上記のデモリンクを参照してください。 – Nariman

2

a:visitedは、ブラウザの履歴にあるURLを指すすべてのリンクに一致します。

AJAXを使用してURLへのナビゲーションをキャンセルすると、URLはブラウザの履歴に決して表示されません。

#リンクを使用して修正できます。

+0

ありがとうございますが、上記のデモリンクをご覧ください。 – Nariman

0

a:visitedとのスタイルを共有するajaxコールバックを使用して、リンク上にクラスを設定することはいつでも可能です。

1

a:visitedは、リンクが「実行」されている場合にのみトリガーされます。

AJAX呼び出しへのリンクは、通常、「偽」を返します(ハッシュ(<a href="#">link</a>)の解決策は、偽を返します。そうでなければ、ユーザーはページの先頭にジャンプします)。

このように、リンクは決して「実行」されていないため、訪問したとマークされません。

+0

ありがとうございます。私にはちょっと変わったようですが、あなたが正しいと思います。私は、ブラウザがそのページへのリクエストを行い、そのページへのその後の訪問時にそのキャッシュにコピーを持っていることを意味します...直観的に、これは訪問の資格を与えます。 – Nariman

1

いいえ、a要素のhrefは、他の回答者が言っているようにハッシュされたURLを指すように変更しないでください。新しいウィンドウで開く場合は、二重の読み込みが必要になります。サーバー側の変更を行うと、検索エンジンやjsが無効になっているユーザーが壊れてしまいます。

ハッシュを使用してウェブサイトをRIA(リッチインターネットアプリケーション)にアップグレードすると、リンクはmysite.com/pageを指しますが、実際にはmysite.com/#/pageにアクセスするため、実際にはアクセスしないという問題があります。

ここでの適切な解決策は、HTML5履歴APIを使用することです。このAPIを使用すると、URLを直接変更してURL変更につなげることができます(ハッシュの必要がなくなるため)。あなたはハッシュの長所と短所、さらにHTML5履歴APIとの対比についてはこちらをご覧ください: https://github.com/browserstate/history.js/wiki/Intelligent-State-Handling - HTML5 History APIでウェブサイトをアップグレードするためのサンプルコードもあります。

jQuery Mobileは今後、HTML5の履歴APIに使用される予定です(現在作業中ですが、今は実装が完了するのを待っています)。

関連する問題