Javascript range.select在IE10上无法正确突出显示文本
我有一个应用程序,它在一个文本区域中循环,搜索特定的文本,如果找到,突出显示它,并提示用户是否对找到的文本采取行动。这在IE10之前的所有版本的IE上都很有效(文本高亮显示,并提示用户) 在IE10中,range.select将不再突出显示文本,原因是出现了确认提示。如果删除“确认”,则文本将高亮显示。同样在IE 10上,在最后一次确认确定后,当表单返回焦点时,文本的最后一个实例将突出显示 下面是一段代码片段,它可以演示这一点,在IE5、6、7、8、9下可以正常工作,但在IE10上会失败。任何关于重新设计或其他代码替代方案的帮助都将不胜感激。我只需要在IE环境中工作(内部应用程序,仅限于IE使用)Javascript range.select在IE10上无法正确突出显示文本,javascript,html,internet-explorer,cross-browser,Javascript,Html,Internet Explorer,Cross Browser,我有一个应用程序,它在一个文本区域中循环,搜索特定的文本,如果找到,突出显示它,并提示用户是否对找到的文本采取行动。这在IE10之前的所有版本的IE上都很有效(文本高亮显示,并提示用户) 在IE10中,range.select将不再突出显示文本,原因是出现了确认提示。如果删除“确认”,则文本将高亮显示。同样在IE 10上,在最后一次确认确定后,当表单返回焦点时,文本的最后一个实例将突出显示 下面是一段代码片段,它可以演示这一点,在IE5、6、7、8、9下可以正常工作,但在IE10上会失败。任何关
南/琼斯南/史密斯南/布朗
var message=document.theForm.message.value.toUpperCase();
var range=document.theForm.message.createTextRange();
对于(x=0;x我有类似的问题,我根据您的问题和我们有问题的代码做了一个演示
<?xml version="1.0" encoding="ISO-8859-1" ?>
<html>
<head>
<title></title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
</head>
<body>
<form name="theForm">
<input type="text" id="txt" value="1234567890" />
<span id="selected" />
</form>
<script>
function selectRange(start, end) {
var range = document.theForm.txt.createTextRange();
range.moveStart("character", 0 - end);
range.moveEnd("character", 0 - end);
range.select();
// Und dann den neu hinzugekommenen Teil markieren.
range.moveStart("character", start);
range.moveEnd("character", end - start);
range.select();
}
function step(x) {
if (x >= document.theForm.txt.value.length - 2)
return;
selectRange(x, x + 2);
document.getElementById("selected").innerHTML = document.selection.createRange().text;
window.setTimeout(function () { step(x + 1); }, 1000);
}
step(0);
</script>
</body>
</html>
我希望这有帮助。
其他浏览器做什么?我猜确认模式窗口会被聚焦,它可以从范围内移除视觉焦点。这听起来对我来说是可以接受的。你可以考虑实现你自己的模态窗口,它不会窃取焦点(但实际上:它应该)。没有在其他浏览器上测试过它…我们在这个环境中以IE为中心。不幸的是,由于我正在循环遍历每个找到的项目,我需要一种方法来暂停脚本,并等待输入。这有点需要确认窗口来获得焦点?但是,可能需要使用另一种形式的模式输入来实现。以前它工作得太糟糕了y、 …f12在说什么?设置一个提交按钮而不是确认提示如何?阅读textRangeSelect atm,但我不确定这是您需要的我会给f12开发工具一个视图,看看它说了什么。不幸的是,一个按钮真的不能以这种方式工作。用户确实按下一个按钮来启动textarea搜索,但是代码需要在文本区域中读取/循环,每次出现NAM时都会提示他们。看起来我可能需要找到另一种模式提示,这将使屏幕能够升级并显示突出显示的文本。谢谢。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<html>
<head>
<title></title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
</head>
<body>
<form name="theForm">
<input type="text" id="txt" value="1234567890" />
<span id="selected" />
</form>
<script>
function selectRange(start, end) {
var range = document.theForm.txt.createTextRange();
range.moveStart("character", 0 - end);
range.moveEnd("character", 0 - end);
range.select();
// Und dann den neu hinzugekommenen Teil markieren.
range.moveStart("character", start);
range.moveEnd("character", end - start);
range.select();
}
function step(x) {
if (x >= document.theForm.txt.value.length - 2)
return;
selectRange(x, x + 2);
document.getElementById("selected").innerHTML = document.selection.createRange().text;
window.setTimeout(function () { step(x + 1); }, 1000);
}
step(0);
</script>
</body>
</html>
this.selectTextRange = function (start, end) {
window.setTimeout(function() {
var range = thisControl.textBox.createTextRange();
// Ganz an den Anfang moven
range.moveStart("character", 0 - end);
range.moveEnd("character", 0 - end);
range.select();
// Und dann den neu hinzugekommenen Teil markieren.
range.moveStart("character", start);
range.moveEnd("character", end - start);
range.select();
}, 0);
};