如何用javascript在网页中搜索字符串

How do you search for a string in a webpage with javascript?

本文关键字:搜索 字符串 网页 何用 javascript      更新时间:2023-09-26

我正在制作一个javascript greasemonkey脚本,当它在网页中找到某个字符串时重定向您。下面是我的代码:

// ==UserScript==<br>
// @name No 009 Sound System!<br>
// @version 1.0<br>
// @namespace http://www.cakeman.biz/<br>
// @description Warn user when about to view a youtube video with 009 Sound System audio<br>
// @include http://*/*<br>
// @copyright  2011+, Zack Marotta 
// ==/UserScript==
var result, search_term = 'somerandomsearchterm';
var str = document.URL;
var url_check = str.search(search_term);
if (url_check !== -1) {
var result = search_term;
alert(str);
    window.location = "http://www.web.site";
}

脚本运行时什么也没有发生。我做错了什么?

对于某些特定的函数,您必须在Greasemonkey UserScript中使用unsafeWindow而不是window。如果你想让你的脚本在GreaseMonkey和其他位置工作,使用这个:

var win = typeof unsafeWindow != "undefined" ? unsafeWindow : window;

原来的答案让我退缩了,因为那似乎不是你的问题。最有可能的是,您忘记将// @include添加到元块中。

如果您的脚本必须使用GreaseMonkey重定向某个固定页面,您还可以将脚本缩短为:

// ==UserScript==
// @name Redirect
// @include *i-am-afraid-of-this-word*
// ==/UserScript==
location.href = "http://www.google.com/search?q=need-help-getting-courage";

有关元块的更多信息,请参见:http://wiki.greasespot.net/Metadata_block

您注意到正在执行区分大小写的搜索吗?当查找小写字母时,如果只有一个字母是大写,则不会触发,反之亦然,如果您想要大小写不敏感,则需要RegExp作为"搜索项"。

另一件事是,您不需要元数据块中的<br>,因为那时包含是不工作的,否则页面将需要在地址中有<br>来匹配和执行。

额外:!==应该可以正常工作,但不是必需的,在这种情况下,一个!=就可以了,并且强烈建议您不要使用unsafeWindow