ENforce
by
noromanba
2018-08-02 [2018/08/02 07:48:33]
enforce English page w/o login/sign-in
@@ -1,16 +1,17 @@
/*
- * @title choicEN
- * @description choice English page w/o login/sign-in
+ * @title ENforce
+ * @description enforce English page w/o login/sign-in
* @include http://*
* @include https://*
- * @license MIT License https://opensource.org/licenses/MIT
+ * @contributor noromanba http://let.hatelabo.jp/noromanba/let/hLHVndmmiaF5
+ * @license MIT License https://opensource.org/licenses/MIT
* @javascript_url
*/
// e.g.
-// https://instagram.com/instagram?hl=ja
-// https://twitter.com/twitter?lang=ja
-// https://www.google.com?hl=ja
+// https://instagram.com/instagram
+// https://twitter.com/twitter
+// https://www.google.com
// TBD
// - en-* en_*
@@ -19,16 +20,22 @@
'use strict';
const url = new URL(location.href);
+ // intersection w/ loop implements c.f.
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#Implementing_basic_set_operations
+ // TBD Map w/ hostname
const langQueue = new Set([
'hl',
'lang',
]);
- [...url.searchParams.keys()].some(key => {
- if (langQueue.has(key)) { // TBD .get() instead
+ // hard to intersection w/o loop
+ [...langQueue].some(key => {
+ if (url.searchParams.has(key)) { // TBD .get() instead
url.searchParams.set(key, 'en');
return true;
}
+ // XXX redundant; order sensitive
+ url.searchParams.append(key, 'en');
});
location.search = url.search;
/*
* @title ENforce
* @description enforce English page w/o login/sign-in
* @include http://*
* @include https://*
* @contributor noromanba http://let.hatelabo.jp/noromanba/let/hLHVndmmiaF5
* @license MIT License https://opensource.org/licenses/MIT
* @javascript_url
*/
// e.g.
// https://instagram.com/instagram
// https://twitter.com/twitter
// https://www.google.com
// TBD
// - en-* en_*
// - pathname
(() => {
'use strict';
const url = new URL(location.href);
// intersection w/ loop implements c.f.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#Implementing_basic_set_operations
// TBD Map w/ hostname
const langQueue = new Set([
'hl',
'lang',
]);
// hard to intersection w/o loop
[...langQueue].some(key => {
if (url.searchParams.has(key)) { // TBD .get() instead
url.searchParams.set(key, 'en');
return true;
}
// XXX redundant; order sensitive
url.searchParams.append(key, 'en');
});
location.search = url.search;
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。