2

私はオペラで少し問題に直面しています。他のブラウザではこれを複製できませんでした。

ロード中のページがあります。ページが読み込まれたら、JavaScript を使用して ajax リクエストを作成し、json 形式で情報を読み込みます (jQuery を使用しています)。
問題は、opera が ajax リクエストを 2 回行うことです。オペラトンボでは、リクエストが1つしか行われていないことを示していますが、私のhttpサーバーは別のことを言っています。

要求されたページは次のようなものです:http://localhost/session&_=1352301441410最後の番号はランダムです。

次の応答ヘッダーも追加しました。

Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Wed, 07 Nov 2012 15:17:22 GMT
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache

これは、ページが初めて読み込まれたとき、またはキャッシュをクリアしたときにのみ発生するため、問題はキャッシュに関連していると思います。
最新の Opera を使用しています: Opera 12.10

他のブラウザでは、すべて正常に動作しています。

4

1 に答える 1

0

少し前にChromeで同様の問題を見つけました。同じ関数を 2 回呼び出しました (ただし、デバッガーのタイムラインには 1 回しか表示されませんでした。それを解決するために、関数が呼び出されるとすぐに 1 に設定され、完了すると 0 に設定される変数を使用しました。もちろん、変数が 1 の場合、関数は呼び出されません。関数を呼び出すコードのスニペットは次のとおりです。

if (security_var == 0)
{
  security_var = 1;
  function_whatever();
}
else
{
  alert('Function called while variable is 1');
}

関数は次のようになります。

function function_whatever()
{
  //the code bla bla bla
  //.....

  security_var = 0;
}

関数に他の終了方法がある場合は、security_var = 0;そこにも配置する必要があることを覚えておいてください:)問題を回避するための最良の方法ではありません(たとえば、関数が何らかの理由で終了した場合、開始できなくなる可能性があります)変数が 1 に設定されているためです) が、テスト目的では問題ありません。アラートで確認できます。

于 2012-11-12T18:46:43.723 に答える