1

ページにボタンがあり、押すとフォーム上のデータを検索し、特定のフィールドを強調表示し、JavaScript ALERT() は見つかった単語のユーザーです。ユーザーが ALERT() を OK すると、javascript は単語の次の出現を検索して強調表示し、再警告し、それ以上データが見つからなくなるまでこの動作を続けます。

IE9 より前のバージョンでは、以下のコードは問題なく動作してこの動作を生成していました (これはコードの非常に単純なバージョンであり、問​​題を示しています)。通常 (IE9 より前) 最初の ALERT() の一時停止時にテキストが画面上で強調表示されますが、IE9 ではそうではありません。IE9 では、スクリプト全体が完了するまで (2 回目のアラートの後) 強調表示されるものは何も表示されず、その時点では、最後に見つかった文字列のみが強調表示されます。これにより、アプリケーションがステップスルーして見つかった各単語を強調表示し、ユーザーに警告することを防ぎます。

以下を IE9 で実行してから、IE8 以下で実行してみてください。この状況では、他のブラウザーについて心配する必要はありません。IE だけです (制御されたブラウザー アプリケーション環境です)。


<html>
<head>
</head>
<body>

<form name="MYFORM">
<input type="text" value="NAME/JONES   ADDR/123 MAIN" name="myinput" size="40">
</form>

<script type="text/javascript" language="JavaScript">

   var range = document.MYFORM.myinput.createTextRange();

   var strFound=range.findText("NAME/");
   range.select();
   alert("Message 1");

   var strFound=range.findText("ADDR/");
   range.select();
   alert("Message 2");

</script>

</body>

IE9 で動作するようにコードを修正する方法についてご意見をお寄せいただきありがとうございます。

ケビン

4

1 に答える 1

0

おそらく、UI を再描画する時間を与える必要があります。これを行うには、コードを を使用してスケジュールできるセクションに分割しますsetTimeout(nextIteration, 0);

于 2012-10-23T02:04:40.990 に答える