0

我正在尝试编写一个小书签以在每个超时期间自动刷新页面,并在每次刷新后搜索一些文本(目的是在特定文本出现在页面上的那一刻捕获它)。

我设法在这里进行自动刷新:http ://www.google.com/support/forum/p/Chrome/thread?tid=1a37ccbdde5902fd

我设法使用以下代码进行定期搜索(不刷新):

setTimeout('reload()',1000*timeout);
function reload(){
  setTimeout('reload()',1000*timeout);
  searchText();
  window.location.reload();
}
function searchText() {
  var myRegExp = 'so';
  var t = document.body.innerHTML;
  var matchPos1 = t.search(myRegExp);
  if(matchPos1 != -1)
alert("There was a match at position " + matchPos1); 
  else
alert("no match");
}

但我不能让自动刷新和搜索一起工作。有人吗?

4

2 回答 2

1

解决了(嗯,几乎...)

javascript:
var myRegExp = prompt("Enter text to watch out for");
timeout=prompt("Set timeout [s]");
current=location.href;
setTimeout('reload()',1000*timeout);

function reload(){
  var found = searchText();
  if (!found) {
    setTimeout('reload()',1000*timeout);
    fr4me='<frameset cols=\'*\'>\n<frame id="frame01" src=\''+current+'\'/>';
    fr4me+='</frameset>';
    with(document){write(fr4me);void(close())};
  }
}

function searchText() {
  var f = document.getElementById("frame01");
  if (f != null && f.contentDocument != null) {
    var t = f.contentDocument.body.innerHTML;
    var matchPos = t.search(myRegExp);
    if(matchPos != -1) {
      alert("There was a match at position " + matchPos); 
      return true;
    }
    else {
      return false;
    }
  }
}
于 2011-11-10T20:26:59.447 回答
1

我相信问题在于您的重新加载小书签将刷新页面,清除小书签添加到页面的 javascript。即使您删除searchText呼叫,我希望您会看到该页面仅重新加载一次。重新加载会清除setTimeout您创建的内容。

您可能可以使用您发布的使用框架的链接中的解决方案来解决这个问题。由于它只重新加载框架而不是整个页面,因此它不会清除您的 javascript。

于 2011-11-08T21:36:42.163 回答