我有一个通过文本区域循环的应用程序,搜索特定文本,如果找到则突出显示它,并提示用户是否对找到的文本采取行动。这在 IE10 之前的所有 IE 版本上运行良好(文本突出显示,并提示用户)。
在 IE10 中,range.select 将不再突出显示文本,因为似乎是 CONFIRM 提示。如果 CONFIRM 被删除,文本将突出显示。同样在 IE 10 上,在最后一个 CONFIRM 确定后,文本的最后一个实例会在表单返回焦点时突出显示。
下面是一个代码片段,可以证明这一点,在 IE 5、6、7、8、9 下可以正常工作,但在 IE10 上会失败。任何有关重新设计或其他代码替代方案的帮助将不胜感激。我只需要它在 IE 环境中工作(内部应用程序,仅限于 IE 使用)。
<html>
<body>
<form name="theForm">
<textarea name="message" rows="20" cols="80">NAM/JONES NAM/SMITH NAM/BROWN</textarea>
</form>
<script>
var message = document.theForm.message.value.toUpperCase();
var range = document.theForm.message.createTextRange();
for (x=0; x<message.length-1; x++) {
if (message.substr(x,4) == "NAM/") {
var strFound=range.findText("NAM/");
if (strFound) range.select();
range.collapse(false);
msg = "Process this name?";
if (confirm(msg)) {
// use x.substr to extract name, and do something
}
}
}
</script>
</body>
</html>