0

こんにちは、次の関数を使用して、href のクリックでプロキシページに移動しています。href への最初のクリックでは正常に動作します。ただし、2 回目以降のクリックでは、コードは window.event.returnValue=true; を呼び出しません。ステートメントですが、デバッガーを使用すると期待どおりに動作します。

function CallDownloadProxy(url)
{
  //debugger;
  try
  {
   window.location = url;
   window.event.returnValue=true;
}

  catch (err)
  {
    alert(err.description );
  }

}

誰かがこれについて知っている場合は親切に助けてください

4

3 に答える 3

0

私の知る限り、location="..."およびlocation.href="..."はlocation.assign( "...")と同等です。つまり、後続のコード行はブラウザによって評価される可能性がありますが、JavaScriptが生成されるとすぐに、ブラウザはドキュメントをアンロードし、onclickイベントをキャンセルするか、バブリングを防ぐかに関係なく、新しいURLをロードします。

繰り返し可能なアクションが必要な場合は、リンクを別のフレームなどにターゲットにする必要があります...

プロキシページ(?!)にアクセスして最初に作業することに関して、あなたの質問が何を意味するのかわかりませんが、2回目はわかりません。二度目は?ユーザーがクリックして戻った場合はどうなりますか?ユーザーが[更新]をクリックした場合はどうなりますか?ユーザーがダブルクリックした場合は?ユーザーが明日戻ってきたら?どういう意味ですか!!??

于 2009-06-09T19:17:10.580 に答える
0

falseを返すと、デフォルトのアクションも防止され、すべてのブラウザーで機能します。

function CallDownloadProxy(url) {
   window.location.href = url;
   return false;
}

リンクの代わりに JS を使用する理由が気になります。「セカンドクリック」とはどういう意味ですか?リンクを 2 回クリックする必要があるのはなぜでしょうか。

于 2009-06-08T09:19:41.850 に答える
-1

returnValueを設定した直後に、次のようなことを行う必要があるようです。

 // e comes from event handler parameter
 if (e && e.stopPropagation) //if stopPropagation method supported
  e.stopPropagation()
 else
  event.cancelBubble=true; // for IE

編集:この場合でなければなりません

window.event.cancelBubble=true;

于 2009-06-08T09:57:19.853 に答える