/* タブの横ダブルクリックで最大化を抑止 */ setTimeout( function(){ var elm = document.getElementById("navigator-toolbox"); if( elm !== null ){ elm.addEventListener("dblclick", function(e){ if(e.button==0){ e.stopPropagation(); e.preventDefault(); } }, false); } }, 500 ); /* 端末へ送る対象をソート 同期設定画面にて 「PC名(ブラウザ名)」を設定している前提 */ (function(){ //コンテキストメニューが開かれた時の処理 document.addEventListener("popupshowing", function(e){ switch(e.target.id){ case "context_sendTabToDevicePopupMenu": //端末へ送信メニュー(タブの右クリック) case "context-sendlinktodevice-popup": //リンクを端末へ送信メニュー(リンクの右クリック) case "context-sendpagetodevice-popup": //ページを端末へ送信メニュー(表示中ページ余白の右クリック) break; default: //それ以外は無視 return; } var sendToDeviceSubmenu = document.getElementById(e.target.id); if(!sendToDeviceSubmenu) return; //端末リストのDOM要素を配列に変換 var devices = Array.from(sendToDeviceSubmenu.querySelectorAll("menuitem")); var rec_len = devices.length; if( rec_len < 1 ) return; //セパレータ(createElementで新規に作るとESRで動作が違うので既存のセパレータからcloneNodeでコピーする) var sepOrg = Array.from(sendToDeviceSubmenu.querySelectorAll("menuseparator")); var sepTag; if( sepOrg.length > 0 ){ sepTag = sepOrg[0]; } //名前(label)でアルファベット順(辞書順)にソート devices.sort((a, b) => { var nameA = a.getAttribute("label").trim(); var nameB = b.getAttribute("label").trim(); //特定の単語順に並ぶように比較文字列を置換 nameA = nameA.replace("Firefox ESR","0"); nameA = nameA.replace("Firefox Release","1"); nameA = nameA.replace("Firefox Beta","2"); nameA = nameA.replace("Firefox Aurora","3"); nameA = nameA.replace("Firefox Nightly","4"); nameA = nameA.replace("Waterfox","5"); nameA = nameA.replace("Floorp","6"); nameB = nameB.replace("Firefox ESR","0"); nameB = nameB.replace("Firefox Release","1"); nameB = nameB.replace("Firefox Beta","2"); nameB = nameB.replace("Firefox Aurora","3"); nameB = nameB.replace("Firefox Nightly","4"); nameB = nameB.replace("Waterfox","5"); nameB = nameB.replace("Floorp","6"); if (nameA < nameB) return -1; if (nameA > nameB) return 1; return 0; }); //ソートした順に要素を再配置 var idx = 0, name, newname, lastname = "", nn, ln; devices.forEach(device => { if( idx <= rec_len - 3 ){ name = device.getAttribute("label").trim(); //括弧より前がPC名なのでPC名が変わったらセパレータを挟む ln = lastname.split("("); nn = name.split("("); if( idx && ln.length > 1 && nn.length > 1 && ln[0] != nn[0] ){ var sep = sepTag.cloneNode(true); sendToDeviceSubmenu.appendChild(sep); } lastname = name; //視認性を良くするために通番を付番し余白追加 newname = "[" + ("00" + (idx+1)).slice(-3) + "] " + name; newname = newname.replaceAll("("," ( "); newname = newname.replaceAll(")"," ) "); //端末一覧の名称を置換 device.setAttribute("label", newname); const lbl = device.querySelectorAll("label"); for( var i=0; i { seprec.remove(); }); }, false); })();