概要


Googleの検索言語をサクッと切り替えるためのブックマークレット - かみのメモ を利用していたのだが、最近うまく切り替わらない

現状

javascript:(()=>{if(location.host=='www.google.com'&&location.pathname=='/search'){var params=new URLSearchParams(location.search);params.set('hl', params.get('hl')=='ja'?'en':'ja');location.search=params.toString();}})()
if(location.host=='www.google.com'&&location.pathname=='/search') {
  var params = new URLSearchParams(location.search);
  params.set('hl', params.get('hl')=='ja'?'en':'ja');
  location.search=params.toString();
}

if 検索画面 params 変数 = URLSearchParamsオブジェクト hl = ja → en hl = en → ja

ていうか 

地域を加えてみる (gl = us) → 成功

if(location.host=='www.google.com'&&location.pathname=='/search') {
  var params = new URLSearchParams(location.search);
  params.set('hl', params.get('hl')=='ja'?'en':'ja');
  params.set('gl', params.get('gl')=='ja'?'us':'ja');
  location.search=params.toString();
}
javascript:(()=>{if(location.host=='www.google.com'&&location.pathname=='/search'){var params=new URLSearchParams(location.search);params.set('hl', params.get('hl')=='ja'?'en':'ja');params.set('gl', params.get('gl')=='ja'?'us':'ja');location.search=params.toString();}})()

hl, glがないときは jaとみなしたい


今の場合 正常動作したとしても、 enに変換するまで2クリック必要 1回目 hl = null → ja 2回目 hl = ja → en

URLSearchParams: get() メソッド - Web API | MDN ないときは nullを返す

ja または null → en jaでない かつ nullでない → en

三項演算子 条件の連鎖

params.set('hl', params.get('hl')=='ja'?'en':'ja');

params.set('hl', params.get('hl')=='ja'?'en': params.get('hl')== null ? 'en' : 'ja');
if(location.host=='www.google.com'&&location.pathname=='/search') {
  var params = new URLSearchParams(location.search);
  var hl = params.get('hl');
  var gl = params.get('gl');
  params.set('hl', hl=='ja'?'en': hl== null ? 'en' : 'ja');
  params.set('gl', gl=='ja'?'us': gl== null ? 'us' : 'ja');
  location.search=params.toString();
}
javascript:(()=>{
if(location.host=='www.google.com'&&location.pathname=='/search') {
  var params = new URLSearchParams(location.search);
  var hl = params.get('hl');
  var gl = params.get('gl');
  params.set('hl', hl=='ja'?'en': hl== null ? 'en' : 'ja');
  params.set('gl', gl=='ja'?'us': gl== null ? 'us' : 'ja');
  location.search=params.toString();
}
})()

うまくいかない 保留で