我想写一个Greasemonkey / userscript,自动将.compact
添加到以https://pay.reddit.com/开头的网址,以便自动将我重定向到移动版本。
我一直在寻找类似的用户脚本,特别是这一个:https://userscripts.org/scripts/review/112568试图弄清楚如何编辑替换模式,但我缺乏这个领域的技能。
如何编写将我从https://pay.reddit.com/*
重定向到https://pay.reddit.com/*.compact
的Greasemonkey脚本?
由于
答案 0 :(得分:4)
脚本应该做这些事情:
#...
)结尾)并对其进行说明。.compact
个网址。document-start
运行,脚本可以在这种情况下提供更好的性能。为此,此脚本有效:
// ==UserScript==
// @name _Reddit, ensure compact site is used
// @match *://*.reddit.com/*
// @run-at document-start
// @grant none
// ==/UserScript==
var oldUrlPath = window.location.pathname;
/*--- Test that ".compact" is at end of URL, excepting any "hashes"
or searches.
*/
if ( ! /\.compact$/.test (oldUrlPath) ) {
var newURL = window.location.protocol + "//"
+ window.location.host
+ oldUrlPath + ".compact"
+ window.location.search
+ window.location.hash
;
/*-- replace() puts the good page in the history instead of the
bad page.
*/
window.location.replace (newURL);
}
答案 1 :(得分:0)
您展示的示例脚本使用正则表达式来操纵窗口的位置:
replace(/^https?:\/\/(www\.)?twitter.com/, 'https://mobile.twitter.com');
不出所料,这会将https://www.twitter.com
和http://twitter.com
替换为https://mobile.twitter.com
。
您的情况略有不同,因为如果匹配某些正则表达式,您希望将字符串附加到您的网址。尝试:
var url = window.location.href;
var redditPattern = /^https:\/\/pay.reddit.com\/.*/;
// Edit: To prevent multiple redirects:
var compactPattern = /\.compact/;
if (redditPattern.test(url)
&& !compactPattern.test(url)) {
window.location.href = url + '.compact';
}
请参阅:http://jsfiddle.net/RichardTowers/4VjdZ/3了解测试用例。