【发布时间】:2012-10-22 23:12:58
【问题描述】:
我在页面上有一个按钮,按下该按钮时,会搜索表单上的数据,突出显示某个字段,并且 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 下工作的任何见解。
凯文
【问题讨论】:
-
您在 IE9 运行过程中检查过控制台是否有任何错误抛出?
-
恐怕您在使用本机警报时无能为力。是否可以选择使用其他东西,例如jQueryUI 对话框?
-
是的,我检查了调试器,没有抛出任何错误。我还尝试使用 IE9 开发人员工具将浏览器模式设置为 9、8、7 和兼容模式,但它仍然表现出“不良”行为。但是,在本机 IE8 或 7 中运行,它可以工作。除了原生 Javascript,我别无选择。
-
实际上,无论您使用 PROMPT() 还是 ALERT(),都会发生相同的“不良”行为。我实际上在实际应用程序中使用了 PROMPT(),但是 PROMPT 和 ALERT 都会产生相同的问题。
标签: javascript internet-explorer-9 range alert