在Javascript页面中搜索-一个结果错误

Search in Page Javascript - One result error

本文关键字:一个 错误 结果 Javascript 搜索      更新时间:2023-09-26

我正在实现一个'在页面中找到'搜索框,并发现了一些javascript代码,工作得很好。如果有多个字符串,按enter键在结果之间循环,然后返回到开始处。但是,如果只有一个结果,在初始搜索之后再次按enter键会弹出未找到的警报。是否有任何方法阻止警报显示时,按下enter再次对单个结果?

代码如下:

var TRange=null;
function findString (str) {
 if (parseInt(navigator.appVersion)<4) return;
 var strFound;
 if (window.find) {
  // CODE FOR BROWSERS THAT SUPPORT window.find
  strFound=self.find(str);
  if (!strFound) {
   strFound=self.find(str,0,1);
   while (self.find(str,0,1)) continue;
  }
 }
 else if (navigator.appName.indexOf("Microsoft")!=-1) {
  // EXPLORER-SPECIFIC CODE
  if (TRange!=null) {
   TRange.collapse(false);
   strFound=TRange.findText(str);
   if (strFound) TRange.select();
  }
  if (TRange==null || strFound==0) {
   TRange=self.document.body.createTextRange();
   strFound=TRange.findText(str);
   if (strFound) TRange.select();
  }
 }
 else if (navigator.appName=="Opera") {
  alert ("Opera browsers not supported, sorry...")
  return;
 }
 if (!strFound) alert ("String '"+str+"' not found!")
 return;
}

我已经看过代码,看看是否有什么明显的,但我是新的javascript,不能弄清楚。

任何帮助都是非常感激的。谢谢。

不支持window.find。我建议不要使用它。

也就是说,你对

的尝试
while(window.find(str, 0, 1)) continue;
当只有一个结果时,

"倒带"搜索到开始将不起作用,因为浏览器已经突出显示了该结果- 在突出显示的结果之前(或之后)没有结果。

一种解决方案是向后搜索你知道确实存在的东西(例如document.body.innerHTML的第一个字母),直到你到达开头。

注意,如果您搜索文档中第一个单词的唯一实例,这个小技巧仍然可能失败!