私は、フラグメントのみを含むhref
のアンカータグを持っています。クリックハンドラが割り当てられています。リンクをクリックすると、ハンドラが終了した後、レベルの高いページが読み込まれます。アンカーhrefがフラグメントのフルパスを表示するのはなぜですか?
- ページは
http://domain.com/app/path_component
- にあるページが
<base href="http://domain.com/app/">
- ページが含まれている定義されています:
<a href="#fragment">
...</a>
- をjQueryのクリックハンドラ設定します:
$('a').on('click', handler)
をここで
.htaccess
は、サーバー上のPHPアプリケーションへのサーバー処理を指示します。/app
は事実です
私はfalseを返さず、e.stopPropagation()またはe.preventDefault()も呼び出さなかったので、ブラウザがデフォルトの処理を行い、hrefを処理することがわかりました。なぜ私はそれが別のページを読み込んだのですか?
ハンドラをトレースすると、this.hrefが "http://domain.com/app/#fragment"であることがわかりました。それは親ページがロードされている理由を説明しますが、なぜそれがそのページであったのかわからないのですか?
オリジナルのhrefを見ることができる唯一の方法はhref属性を直接チェックすることでした。それは必要であるべき場合には、ページの読み込みを許可するが、それは断片のみだったときにそれを防ぐので、私はハンドラとして返す書いた:?この必要があったのはなぜ
return $(this).attr('href')[0] != '#';
私はフラグメントのために処理し、デフォルトではないと思いました
あなたが説明する目的で に設定されていますが、スタンドアロンのフラグメントには影響しないと思っていました。私はこれについて私の理解を再構築しなければならない。 –
wrlee