Skip to content

Instantly share code, notes, and snippets.

@cherenkov
Created May 26, 2009 15:50
Show Gist options
  • Select an option

  • Save cherenkov/118130 to your computer and use it in GitHub Desktop.

Select an option

Save cherenkov/118130 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name tab-close_LR_button
// @namespace http://d.hatena.ne.jp/Cherenkov/
// @description http://d.hatena.ne.jp/Cherenkov/20090526/p1
// @include chrome://browser/content/browser.xul
// ==/UserScript==
(function() {
var tabContextMenu = document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu");
function contextEdit(){
var L_btn = document.createElement("button");
L_btn.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAANCAIAAAArLKlOAAAABnRSTlMA%2FwCjALHDmqA%2BAAABgklEQVR4nGP8v3gjA4ngpas5Ey65W2YaOSd2YYrfs9KZN28eC1Y9Xc9u7M%2Bf%2Fv37dwYLNzSz0pKSZGVl0W1byfo9YM08Xl7eBQsWsLKyIkvN%2F%2F22rKxMSEgoKCgIYdsRBaHp06crKChMnTpVWlr669evv3%2F%2F9l05GyLLy8trYmIyZ86cqqoqDQ0NqLayS0de7XmVn59vZmYGEeHm5j5w4ACaW16%2Ffv3mzRvNs7dZGu%2Be379%2Ff35%2Bvp%2BfHzMzM64QgoDdu3c7OTkxMDAwubq6CgoKHj9%2B%2FPHjx%2Fj1vHv3buvWrTkCcgwMDIyQeFvH9WfhwoVOTk7Jyck8PDwMDAx%2F%2F%2F69desWMzPz379%2F37x5c%2B7cuUOHDsXHx%2Ft9YkBog4AJb%2B4dOnQoLi7O19f3x48f3t7eampqrKysIiIiGhoakX%2B54SpR4q1ARMm%2F13%2FixIkbN25MSUnh5uaeZecDlfuL4mD06FY8enmCidNhecGenp6vX7%2Fi8icjnjS5huNXyA82rFIAVHuVVG1mytAAAAAASUVORK5CYII%3D");
L_btn.addEventListener("command", function() {
closeTabs("left");
}, false);
var R_btn = document.createElement("button");
R_btn.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAANCAIAAAArLKlOAAAABnRSTlMAAAAAAABupgeRAAABWUlEQVR4nJWQv4uCYBjHn%2B4lUKRF2trbXNzzpS2C6NdamGM4SEP9CUJTW1tSDiI0RIS0NURL4BwVKBKEEm2GS8jd4MHFdXl3n%2FH5vp%2Fnxwue58H%2FeVMUxbKs50AUxcPh8NJrNBoY4%2BcXGONCodDv93%2BeVqvVaJru9XqKojwGyWRyPB6nUqlyuazr%2BjctsdvtBoOBLMuqqpqm6ft%2BFPi%2BbxgGRVHn83k4HDqO0263c7ncl1qtVi%2BXy3ss2%2B2W5%2FlutxspKLredV2GYV5%2BAEAmkymVSkEQeJ4nCAICgOVySRBEPp8nSTLGPJ1Os9ksCIJms5mISvP5fDKZcBzHsmw6nUYIhWGYzWYRQgBwu91Go9FqteJ5vl6vA0DisZ%2Bmafv9%2Fnq93u%2F34%2FFoGAZBEIvFQlVVjuM6nU7MLp8Ui8XNZtNqtSRJsm37dyECY1ypVNbr9V%2BFiOl0GpN%2BAJS%2FqroH3r3AAAAAAElFTkSuQmCC");
R_btn.addEventListener("command", function() {
closeTabs("right");
}, false);
var hbox = document.createElement("hbox");
hbox.setAttribute("align","center");
hbox.appendChild(L_btn);
hbox.appendChild(R_btn);
tabContextMenu.appendChild(hbox);
//必要がないときは消える。
tabContextMenu.addEventListener("popupshowing", function() {
var aTab = (document.popupNode.localName == "tabs") ? gBrowser.mCurrentTab : gBrowser.mContextTab;
if(aTab.previousSibling == null)
L_btn.setAttribute("style","display:none");
else
L_btn.setAttribute("style","display:inline");
if(aTab.nextSibling == null)
R_btn.setAttribute("style","display:none");
else
R_btn.setAttribute("style","display:inline");
}, false);
}
function closeTabs(LeftRight) {
var aTab = (document.popupNode.localName == "tabs") ? gBrowser.mCurrentTab : gBrowser.mContextTab;
var pos = aTab._tPos;
//コンテキストメニューを開いたタブをアクティブにして、
//タブを消す際にチラチラ表示されるのを防ぐ。
if(pos!=gBrowser.mCurrentTab._tPos)
gBrowser.selectedTab = gBrowser.mTabs[pos];
var start = (LeftRight == "left") ? pos - 1 : gBrowser.mTabs.length - 1;
var stop = (LeftRight == "left") ? 0 : pos + 1;
for(var i = start; i >= stop; i--) {
gBrowser.removeTab(gBrowser.mTabs[i]);
}
tabContextMenu.hidePopup();
}
//Menu Editor対策
setTimeout(function(){contextEdit()},0);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment