私は自分自身といくつかの友人のために個人的なuserscriptに取り組んでいます。ユーザースクリプトは、ページ上のキーワードをブロックするために使用されます。1秒ごとにキーワードのページをスキャンするのが効率的ですか?
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を介して動的に作成されている可能性があります。また、フィルタされていることを確認する必要があります。
しかし、これがキーワードのページをスキャンする最も効率的な方法であるかどうか、またはページ全体を再確認する必要のないより効率的な方法があるかどうかを知りたいと思います新しい要素を再チェックする)。
また、私はできる限り低い間隔をプッシュしたいと思います(私は約100msと考えていますが)、これは非常にリソースにやさしいかどうか分かりません。
ありがとうございました。
間隔を確認するのではなく、何かが変わったときにそれをチェックしてみてください。それははるかに効率的です。 –
正確に@ mzeus.boltの提案は正しいです。 キーアップやぼかしなどの適切なイベントをチェックして、入力フィールドの値をチェックして制限された単語を持つようにします。 –
提出するタイミングを確認してください(あなたのコードに「続行してもよろしいですか?」というように、提出するものがあると思います) –