Bookmarklet自动刷新并在页面上查找文字?

时间:2011-11-07 22:47:19

标签: javascript find bookmarklet page-refresh

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

我设法像这里一样进行自动刷新: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");
}

但是我不能让自动刷新和搜索一起工作。 任何人

2 个答案:

答案 0 :(得分:1)

我认为问题在于您的重新加载书签将刷新页面,消除由书签添加到页面的javascript。即使您删除了searchText来电,我预计您会看到该页面只会重新加载一次。重新加载会清除您创建的setTimeout

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

答案 1 :(得分: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;
    }
  }
}