我正在制作一个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";
}
脚本运行时没有任何反应。我做错了什么?
答案 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。