【问题标题】:IE9 Alert() now blocks range.select from displaying selected textIE9 Alert() 现在阻止 range.select 显示选定的文本
【发布时间】: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


【解决方案1】:

您可能需要给 UI 时间来重新绘制 - 通过将代码分成可以使用 setTimeout(nextIteration, 0); 安排的部分来做到这一点。

【讨论】:

  • 我会试一试,看看是否有帮助。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2018-09-11
  • 2013-02-21
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多