我正在尝试编写一个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");
}
但是我不能让自动刷新和搜索一起工作。 任何人
答案 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;
}
}
}