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

时间:2011-09-26 16:21:17

标签: javascript browser greasemonkey

我正在制作一个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";
}

脚本运行时没有任何反应。我做错了什么?

2 个答案:

答案 0 :(得分:0)

对于某些特定功能,您必须在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

答案 1 :(得分:0)

您是否注意到您正在执行区分大小写的搜索?如果你想要一个案例,只要一个字母是大写字母就可以触发,反之亦然,如果你想要一个案例 - 不敏感你需要一个RegExp作为你的“搜索词”。

其他的情况是,您在元数据块中不需要<br>,因为那时include是不起作用的,否则页面需要在地址中匹配<br>并且执行。

额外:!==应该可以正常工作,但不需要,在这种情况下,a!=会这样做,强烈建议你不要使用unsafeWindow。