您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Whenever a link to localized greasyfork page is clicked, redirect it to the specified language
当前为
- // ==UserScript==
- // @name Greasyfork in your language
- // @description Whenever a link to localized greasyfork page is clicked, redirect it to the specified language
- // @namespace wOxxOm.scripts
- // @author wOxxOm
- // @version 3.0.8
- // @match https://greasyfork.org/*
- // @exclude https://greasyfork.org/system/*
- // @exclude https://greasyfork.org/*.user.css*
- // @run-at document-start
- // @grant GM_getValue
- // @grant GM_setValue
- // ==/UserScript==
- var language = GM_getValue('language', 'en');
- maybeRedirect(location);
- window.addEventListener('load', function _() {
- window.removeEventListener('load', _);
- var _timer, _title;
- document.getElementById('language-selector-locale').addEventListener('change', function() {
- GM_setValue('language', this.value);
- _title = _title || this.title;
- this.title = this.value + ' saved in ' + GM_info.script.name;
- clearTimeout(_timer);
- _timer = setTimeout(function() {
- this.title = _title;
- _title = null;
- }, 5000);
- });
- });
- window.addEventListener('mousedown', function(e) {
- var a = e.target.closest('a');
- if (a &&
- a.origin === 'https://greasyfork.org' &&
- a.pathname.lastIndexOf('/system/', 0) < 0 &&
- !a.pathname.match(/\/code\/.*?\.user\.(js|css)/))
- maybeRedirect(a);
- }, true);
- function makeRedirectedUrl(url) {
- var m = url.href.split('/');
- if (!/^\w\w(?:-\w\w)?$/.test(m[3]))
- m.splice(3, 0, '');
- if (m[3] === language)
- return url.href;
- m[3] = language;
- var newUrl = m.join('/').replace(/&?locale_override[^&]*/, '').replace(/\?$/, '');
- var noOvr = m[4] === 'forum' || m[4] === 'scripts' && /^\D|^$/.test(m[5]);
- return noOvr ? newUrl : newUrl + (newUrl.indexOf('?') > 0 ? '&' : '?') + 'locale_override=1';
- }
- function maybeRedirect(url) {
- var newUrl = makeRedirectedUrl(url);
- if (newUrl === url.href ||
- document.referrer && makeRedirectedUrl({href: document.referrer}) === newUrl)
- return;
- url.href = newUrl;
- }