Полезная информация

Будьте в курсе последних изменений в мире Mozilla, следя за нашим микроблогом в Twitter.

№116-06-2013 18:42:46

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4720
UA: Firefox 3.6

[CB]"Не закрывать вкладку" в контекстном меню вкладки

"Не закрывать вкладку" в контекстном меню вкладки( Firefox 24 + )
Автор: bunda1, Dumby
Версия: от 16.11.2015.
Описание: добавляет новый пункт Не закрывать эту вкладку в контекстное меню вкладки, который блокирует закрытие вкладки. Код также меняет иконку кнопки закрытия на блокированый вкладке, можно выключить блокировку вкладки если кликнуть на кнопку закрытия которую добавил код.

Скриншот:
http://i67.fastpic.ru/big/2015/1116/b6/f4dbde1bb688b9a9a88f0df82f8c40b6.jpg

Использование: создайте новую Custom Buttons кнопку и положите код в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.

Выделить код

Код:

// "Не закрывать эту вкладку" в контекстном меню вкладки, от 16.11.2015. ................................
((tabContextMenu, tabs, attr) => {
   
   // Создать новый пункт контекстного меню вкладки ....               
   const menuitem = document.createElement("menuitem");
   menuitem.setAttribute("type", "checkbox");
   menuitem.setAttribute("label", "Не закрывать вкладку");
   menuitem.onclick =()=> {
     var tab = document.popupNode;
     tab.hasAttribute(attr) ? tab.removeAttribute(attr) : tab.setAttribute(attr, true);
   };
   tabContextMenu.insertBefore(menuitem, document.getElementById("context_tabViewMenu")); 


   // Стиль для защищённой вкладки ....
   var str = '\
      .tabbrowser-tab:not([pinned])[tabProtect="true"] .tab-close-button {\
      display: -moz-box !important;\
      -moz-image-region: rect(0, 48px, 16px, 32px)!important;\
   }';
   var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   var uri = makeURI("data:text/css," + encodeURIComponent(str));
   sss.loadAndRegisterSheet(uri, 0);     
 
 
   // Устанавливаем когда показывать чекбокс у пункта и удалять атрибут защиты для вкладки ....
   addEventListener("click", (e)=> {
      var tab = e.target;
      if (tab.nodeName !== "tab") return;
      
      var state = tab.hasAttribute(attr);
      e.button
      ? menuitem.setAttribute("checked", state )
      : e.originalTarget.className.startsWith("tab-close-button") && state && tab.removeAttribute(attr);
   }, false, tabs);
 
 
   // Запретить закрывать защищенные вкладки изменив внутреннюю функцию Firefox ....
   var
      src = "gBrowser.removeTab = " + gBrowser.removeTab.toString(),
      str = '{\n\n if (aTab.hasAttribute("' + attr + '")) return;',
      res = src.replace("{", str);
   eval(res);


   // Восстанавливать атрибут для защищённой вкладки после старта браузера ....
   Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore).persistTabAttribute(attr); 


   // Удалять изменения ....
   addDestructor(()=> {
      eval(src);
      sss.unregisterSheet(uri, 0);
      tabContextMenu.removeChild(menuitem);
   });
 
})(document.getElementById("tabContextMenu"), gBrowser.tabContainer, "tabProtect");

Отредактировано bunda1 (16-11-2015 23:49:50)

Отсутствует

 

№216-06-2013 23:15:55

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Firefox 21.0

Re: [CB]"Не закрывать вкладку" в контекстном меню вкладки

bunda1
а приведи, пожалуйста, примеры, в каких случаях это могло бы быть полезно пользователю?


mzfx

Отсутствует

 

№316-06-2013 23:31:07

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4720
UA: Firefox 3.6

Re: [CB]"Не закрывать вкладку" в контекстном меню вкладки

iDev.Pi пишет:

bunda1
а приведи, пожалуйста, примеры, в каких случаях это могло бы быть полезно пользователю?

Например пооткрывает человек кучу вкладок и некоторые заблокирует и потом сможет спокойно все лишние закрыть одним жестом или кликом.
Кстати закрепление вкладки даёт похожую возможность но лично мне не удобно что вкладка уезжает куда то.

Отсутствует

 

№424-08-2013 11:45:51

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 195
UA: Firefox 23.0

Re: [CB]"Не закрывать вкладку" в контекстном меню вкладки

bunda1 Попробовал твою кнопку. Вот что обнаружил:
1. При перезагрузке браузера, если открыты несколько вкладок, то все, кроме активной будут заблокированы.
2. Еще одна мелочь - в контекстном меню вкладки появляется два пункта "Не закрывать вкладку", не смертельно - легко устраняется.
И вопрос: Как перенести кнопку блокировки вправо (вместо стандартного крестика)?

Отсутствует

 

№525-08-2013 14:46:05

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4720
UA: Firefox 3.6

Re: [CB]"Не закрывать вкладку" в контекстном меню вкладки

Andrey_Krropotkin
Да после обновления FF22 на FF23 многое поломалась. Буду исправлять.

Отсутствует

 

№612-10-2013 23:47:17

Northtech
Участник
 
Группа: Members
Зарегистрирован: 16-04-2011
Сообщений: 220
UA: Firefox 25.0
Веб-сайт

Re: [CB]"Не закрывать вкладку" в контекстном меню вкладки

bunda1
Если заблокировать вкладку, затем прикрепить ее, тогда вкладку можно закрыть.

Отсутствует

 

№713-10-2013 00:21:36

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4720
UA: Firefox 3.6

Re: [CB]"Не закрывать вкладку" в контекстном меню вкладки

Northtech
Да кнопка глючная попробую завтра исправить.

Отсутствует

 

№809-11-2015 13:37:41

>ORG@niZM<
Участник
 
Группа: Members
Зарегистрирован: 20-08-2013
Сообщений: 66
UA: Firefox 38.0

Re: [CB]"Не закрывать вкладку" в контекстном меню вкладки

обнова будет?:blush:

Отсутствует

 

№916-11-2015 23:51:21

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4720
UA: Firefox 24.0

Re: [CB]"Не закрывать вкладку" в контекстном меню вкладки

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]