IE9 Alert()现在阻止range.select显示所选文本

时间:2012-10-22 23:12:58

标签: javascript internet-explorer-9 range alert

我在页面上有一个按钮,按下时,搜索表单上的数据,突出显示某个字段,然后javascript ALERT()是找到的单词的用户。一旦用户确定了ALERT(),javascript将搜索并突出显示该单词的下一个出现,并重新定位,并继续此行为,直到找不到更多数据。

在IE9之前,下面的代码可以很好地产生这种行为(这是一个非常简单的代码版本,它演示了这个问题)。通常(在IE9之前)在第一个ALERT()的暂停时,文本在屏幕上突出显示,但在IE9下,它不是。使用IE9,在整个脚本完成之后(第二个警报之后),没有任何内容突出显示,并且此时只突出显示最后找到的字符串。这可以防止应用程序单步执行并突出显示每个找到的单词并警告用户。

尝试在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下工作的任何见解。

凯文

1 个答案:

答案 0 :(得分:0)

您可能需要为UI重新绘制时间 - 通过将代码拆分为可以使用setTimeout(nextIteration, 0);计划的部分来执行此操作。