2011-09-26 53 views
-1

我正在制作一个javascript greasemonkey脚本,它可以在网页中找到某个字符串时重定向您。这里是我的代码:如何在JavaScript中搜索网页中的字符串?

// ==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

点击这里查看您的问题列表,以接受Rob的建议。 http://stackoverflow.com/users/940511/t3hcakeman –

+0

尽管这些答案没有工作。 haha – t3hcakeman

+1

如果“这些答案都不起作用”,然后回过头去评论答案,并编辑问题 - 解释为什么答案不适合你。答案对所述的问题**是有益的**;这是由你来澄清什么时候不是你想要的。 –

回答

0

对于某些特定功能,您必须在Greasemonkey UserScript中使用unsafeWindow而不是window。如果你想在的GreaseMonkey和其他地方你的脚本工作,使用:

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

我已经由原来的答案shrinkened,因为这似乎不是您的问题。很可能,您忘记将// @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

+0

没有工作。你确定它是'url_check!= -1'而不是'url_check!== -1'吗? – t3hcakeman

+0

是的。你确定你的GM脚本在你的页面上是活跃的,包括'// @include *'? *用一个更具体的选择器代替'*'*注意,你的脚本也可以缩短为:'// == UserScript == // @ include * somerandomsearchterm * // ==/UserScript == unsafeWindow.location.href =“http://www.web.site”;' –

+0

缩短的东西没有工作。我会将我的元素添加到脚本中。 – t3hcakeman

0

你注意到你正在执行区分大小写的搜索?如果只有一个字母是大写字母时,它不会触发,如果你想要一个小写字母,反之亦然,如果你想要一个不敏感的,你需要一个RegExp作为你的“搜索字词”。

另外一件事是,你不需要在元数据块中使用<br>,因为那么include就是不工作的,否则页面需要在地址中有<br>来匹配和执行。

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

相关问题