所以我正在爲自己和一些朋友開發個人用戶稿。 userscript用於阻止頁面上的關鍵字。每秒掃描一次關鍵字的頁面是否有效?
要搜索的頁面我使用的關鍵字:
var filter = ["worda", "wordb", "wordc"];
var found = false;
var check =
function() {
//Stores the content of the head and body in the document.
var head = $("head").html();
var body = $("body").html();
$.each(filter, function(index, item) {
if ((head + body).toString().toLowerCase().contains(item.toLowerCase())) {
window.clearInterval(interval);
console.log("Found: " + item);
found = true;
return false;
}
});
if (found) {
$("body").hide();
var originalTitle = $(document).prop("title");
$(document).prop("title", "Blocked");
window.setTimeout(function() {
if (confirm("This page contains a blocked keyword, are you sure you'd like to continue?")) {
$(document).prop("title", originalTitle);
$("body").show();
return;
}
}, 1);
}
};
然後我把它通過重複每一秒:
var interval = window.setInterval(check, 1000);
我之所以重新檢查頁每秒是因爲新的內容可能是通過Javascript動態創建的,我需要確保它也被過濾。
但是,我想知道這是最有效的方式來掃描頁面的關鍵字,或者如果有一個更有效的方法,不需要我重新檢查整個頁面(可能只需要重新檢查新元素)。
此外,我想盡可能低的間隔(我想100毫秒左右),但我不知道這是否會非常資源友好。
謝謝你的幫助。
而不是檢查時間間隔。嘗試檢查它什麼時候發生變化..這將會更有效率。 –
準確地說@ mzeus.bolt的建議是正確的。 檢查一些合適的事件,如鍵控或模糊,以檢查輸入字段的值是否具有受限制的字詞。 –
嘗試檢查它將要提交的時間(因爲你有'你確定你想繼續嗎?'在你的代碼中,所以我認爲它有東西要提交嗎?) –