2018-05-05T12:16:15Z

Firefox userChrome.js用スクリプト:NoStyle.uc.js

CSS無効化でメニュー表示が煩わしかったため、タブメニュー上にCSS無効化メニューを追加

NoStyle.uc.js

// ==UserScript==
// @name          NoStyle.uc.js
// @description   スタイルシートの有効無効をタブメニューで選択する
// @include       main
// @charset       UTF-8
// @author        toshi(https://www.bugbugnow.net/)
// @license       MIT License
// @version       1
// ==/UserScript==

(function () {
  // スタイルシート切換え
  var mi = document.createElement("menuitem");
  mi.setAttribute("id", "context-nostyle");
  mi.setAttribute("label", "スタイルシート切換え");
  mi.addEventListener('command', function() {
    let browser = TabContextMenu.contextTab.linkedBrowser;  // 選択したタブ(右クリックしたタブ)
    let style = gPageStyleMenu._getStyleSheetInfo(browser); // スタイルシート有効無効
    let mm = browser.messageManager;
    
    if (style.authorStyleDisabled) {
      mm.sendAsyncMessage("PageStyle:Switch", '');
    } else {
      mm.sendAsyncMessage("PageStyle:Disable");
    }
  });
  
  // メニュー呼び出しイベント(右クリック時)
  document.addEventListener('popupshowing', function handler(event) {
    // タブのみ処理する
    let tab = TabContextMenu.contextTab;
    if (tab == null) {
      return;
    }
    
    // クリックしたタブに応じて、ラベルを変更する
    let browser = tab.linkedBrowser;                        // 選択したタブ(右クリックしたタブ)
    let style = gPageStyleMenu._getStyleSheetInfo(browser); // スタイルシート有効無効
    if (style.authorStyleDisabled) {
      mi.setAttribute("label", "スタイルシートを有効化");
    } else {
      mi.setAttribute("label", "スタイルシートを無効化");
    }
    return;
  }, false);
  
  // セパレータ
  var ms = document.createElement("menuseparator");
  ms.setAttribute('id', 'context-nostyle-sep');
  
  // タブメニューバーの最下部に要素を追加
  var tabContextMenu = document.getElementById("tabContextMenu");
  tabContextMenu.appendChild(ms);
  tabContextMenu.appendChild(mi);
}());
 コメントを書く