2011-09-26 46 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。

相關問題