9

私のホームページで私は得ました:

<ul id="login">
  <li> <a id="loginswitch" href="./login-page">log-in</a> | </li>
  <li> <a id="signupswitch" href="./signup-page">sign-up</a> </li>
</ul>

MooTools を介して、これらのアンカー要素を id で取得し、クリックすると、ログインまたはサインアップ フォーム (もちろん、イベントの伝播を停止するメソッドを含む) を含む派手な div がその下にポップアップし、 AJAX 呼び出しが開始されるフィールド - セッションを作成し、ページをリロードして、ユーザーがログインし、ユーザー レベル コントロールが表示されるなどのビジュアルを表示することになっています。

ajax 呼び出しは MooTools AJAX クラスによって開始され、evalScriptsオプションは true に設定されます。AJAX ページはスクリプト コードを返します。

<script type="text/javascript">window.location = self.location;</script>

hrefこのシステムは完全に機能します。アンカーの値を自分のスクリプトに変更すると、なぜhref="#"機能しなくなるのでしょうか?

窓と関係あるの?

イベントの伝播が停止した場合でも、リンクをクリックしたときにプロパティが変更されましたか??

4

3 に答える 3

20
window.location = self.location;

この JavaScript は実行中です。

実行すると、ブラウザは の値をwindow.location新しい値に置き換えるように指示されます。 ここでは、すべてのブラウザが同じように反応するわけではありません。期待どおりに機能するものもあれば、うまく機能して 2 つの値を比較するものもあります。 ブラウザーは、それがどのページにあるかを認識しており、同じページに移動するように求めているだけであることも認識しています。

ブラウザキャッシュ

ブラウザには、キャッシュに現在のページのコピーさえあります。サーバーと通信して、キャッシュにあるページがまだ有効かどうかを尋ねることができます。キャッシュが有効な場合、ページのリロードを強制しないと決定される場合があります。バックグラウンドで、これは HTTP ヘッダーで発生します。ブラウザーとサーバーは、さまざまな方法で HTTP を介して通信できます。この場合、ブラウザは次のようなクイック リクエストをサーバーに送信します。

GET /stackoverflow.com/posts/196643/index.html
HTTP/1.1
Host: www.stackoverflow.com
User-Agent: Mozilla/5.0
If-Modified-Since: Sun, 12 Oct 2008 20:41:31 GMT

これは、条件付き GET 要求と呼ばれます。If-Modified-Sinceと言うと、ブラウザは「そのファイルをくれ、ただし最後に見たときから変更されている場合のみ」と言っています。

簡単に言うと、ブラウザにページをリロードするように明示的に指示していません。

方法は次のとおりです。

location.reload( true );

「true」は、リロードを強制するためのオプションのパラメーターです。ブラウザはキャッシュを見さえしません。おっしゃる通りになるだけです。

于 2008-10-13T03:32:19.817 に答える
1

ページのアンカーに移動する (これが#意味すること) には、リロードは必要ありません。

于 2008-10-08T02:25:40.513 に答える
0

彼らが仕事でこの特定のタスクを私に手渡した場合、私はそれを設計に戻します。安全なページまたはOpenIDログインについて話しているのでない限り、ログインまたはサインインフォームをポップアップしないでください。ユーザーは、ページの上部にあるhttps:を探す方法を学ぶ必要があります。表示されない場合は、ログインしないでください。

于 2008-10-19T22:48:06.283 に答える