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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№1357602-08-2019 08:41:30

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

solombala
Так что ли?

скрытый текст

Выделить код

Код:

this.onclick = e => e.button || (
    gURLBar.focused && gURLBar.value
        ? gURLBar.handleCommand(e) : BrowserReload()
);


egorsemenov06
Попробуй дописать в начало
скрытый текст

Выделить код

Код:

(this.preventClearThumbs || (g => {
    var key = "onClearHistory", obs = g.PageThumbsHistoryObserver, func = obs[key];
    return this.preventClearThumbs = () => obs[key] = () => obs[key] = func;
})(Cu.import("resource://gre/modules/PageThumbs.jsm", {})))();

Отсутствует

 

№1357702-08-2019 10:18:50

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 66.0

Re: Custom Buttons

Dumby
Там еще правая была , но так заработало, респект , правда, выделять надо , чтобы перейти  или поиск, а сразу нельзя? gURLBar.inputField.focus(); Без этого...?
Не, нормально..

скрытый текст

Выделить код

Код:

/*Initialization Code*/
this.onclick = this.oncontextmenu = function(event) {
if (event.button == 0) {
var s = "GetStop";
 
  function toggleImage() {
   self.image = cbu.getPrefs(s)
   ? 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAEQklEQVR42n2UbUzVZRjGf+eFEIQUDjWI5rAOMlNRGIu1XjeZzTnN2fyQUMRWOy6KtWjT+cGYH3LZ6oOzWEqMBayVisTcFJ2ITjLQ4Ru5qeQYnQPIiygCR97O6Xr+ByQVfLZn/+d5/s99Pfd9X9d925hx5DuhMQZSUiDhJeh5Bm6HQdQIjPwLbVeg/R/wD8FQ8FFr2+OA0QL44E1IXwcLMgQaC2MOgemuPyDwcfB1wNXTcL5G87yMBp8AmrEYPs+12bLXrFrFAl2f29eH/eE7ftm0j8L1e9ByDZp/hwOadM4AullhFhbk5LjXeTzECcxWXo69qgqCCjAmBpvdTtDvh+FhdHJbNucm4KLScKkSfi2dAp4EdSrkXwo9nvdyd+7k2cZGxuvrcSijjrY2qJTJnTswfz5ERMDAAEGfj4mJCb/A64TReF3fH6ChTGDDOlikfL2yPi2trOjwYVI6Ownm5+OQkUMPkJMDhw5BbS20tip4eToh/4ZEkR4cHxzsFXCtTs78BaXbYPSsQJfHKezvSkreX79kCZFFRRaA06GnVq+G/fthzhzo74fToqapCW7cgFu3lABloKUFEdconIY+KCmGjm+0ef012LfP40lZZC7V1WFzu7EtXRoKOUP8b906nfn796071gOG9+ZmAv39Pv2pEXm1f8Ixj0BzP4ayHZs2EZ+URCAxEbvxcOFCOHUK9u6FPXssoh4ahjxDYnU1VFQgqVUJq74dfvpEi+xtyckVX+hlV3y8+Tktobt3weQ1NRX06Kzj6FECckRYRV2y2K7F2q8yM2s+O3IEl7wJ/l9mJo8GdMWK2UG7uqw7gd27b8quVJn+focW72xREF+WluLKy7NAH3h68qQoLIQTJx4P3xC2axccPGh21xRhg7Au6oli42lWNhTod3o8JJKWhj0rC8JU6cePh0IvKZkGM3k2e2mZ3l4V8JhqdDAg0DKT05sqggIt3Mthy8/6LlOdS0hJOgu3vF25UpyquiMjQw+IEMO2BeRy6Va4Ja+A1yssqsX+AT157lMBvBolL6XODR9C8tPGW40w05+Kpbr0dMVRAMq55b0UQkICGN86OgjKYwn/N+E0ye+yHyXEbydJWfaGTL+Gl6XK53UWa9+4EacJ3Yj/8uWQZ2Yfq541ogaoigteuGCEL9Fy1nwbNLebzRTTc9VQPoLMzeqhbpVtQKHZZKx09NojI+MsBTidBO+pN3m9BHt6jIf1IvaKMM78rbW87K6crP0H4zkB50lAEk/yCxKBGnWs/qfaoqJCeTQehoZPYM2aV3XabNqfst1arh/dMzVpKWDNu0qH5otqhYnzBCw6wieVNmS6m8B8KlbvgCTUEuqnvX9MAc7S+RHX0cre4rfl9Vvq/qIm4ilRI9QRAXqH1aBFd4ty2H1M9y+ZkJ/Q+adGtM7Hw0MpIXnyK+CxUVNEmmqCAXWRgN+0gUet/wNAL5t/cJT8RAAAAABJRU5ErkJggg=='
   : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAEQklEQVR42n2UbUzVZRjGf+eFEIQUDjWI5rAOMlNRGIu1XjeZzTnN2fyQUMRWOy6KtWjT+cGYH3LZ6oOzWEqMBayVisTcFJ2ITjLQ4Ru5qeQYnQPIiygCR97O6Xr+ByQVfLZn/+d5/s99Pfd9X9d925hx5DuhMQZSUiDhJeh5Bm6HQdQIjPwLbVeg/R/wD8FQ8FFr2+OA0QL44E1IXwcLMgQaC2MOgemuPyDwcfB1wNXTcL5G87yMBp8AmrEYPs+12bLXrFrFAl2f29eH/eE7ftm0j8L1e9ByDZp/hwOadM4AullhFhbk5LjXeTzECcxWXo69qgqCCjAmBpvdTtDvh+FhdHJbNucm4KLScKkSfi2dAp4EdSrkXwo9nvdyd+7k2cZGxuvrcSijjrY2qJTJnTswfz5ERMDAAEGfj4mJCb/A64TReF3fH6ChTGDDOlikfL2yPi2trOjwYVI6Ownm5+OQkUMPkJMDhw5BbS20tip4eToh/4ZEkR4cHxzsFXCtTs78BaXbYPSsQJfHKezvSkreX79kCZFFRRaA06GnVq+G/fthzhzo74fToqapCW7cgFu3lABloKUFEdconIY+KCmGjm+0ef012LfP40lZZC7V1WFzu7EtXRoKOUP8b906nfn796071gOG9+ZmAv39Pv2pEXm1f8Ixj0BzP4ayHZs2EZ+URCAxEbvxcOFCOHUK9u6FPXssoh4ahjxDYnU1VFQgqVUJq74dfvpEi+xtyckVX+hlV3y8+Tktobt3weQ1NRX06Kzj6FECckRYRV2y2K7F2q8yM2s+O3IEl7wJ/l9mJo8GdMWK2UG7uqw7gd27b8quVJn+focW72xREF+WluLKy7NAH3h68qQoLIQTJx4P3xC2axccPGh21xRhg7Au6oli42lWNhTod3o8JJKWhj0rC8JU6cePh0IvKZkGM3k2e2mZ3l4V8JhqdDAg0DKT05sqggIt3Mthy8/6LlOdS0hJOgu3vF25UpyquiMjQw+IEMO2BeRy6Va4Ja+A1yssqsX+AT157lMBvBolL6XODR9C8tPGW40w05+Kpbr0dMVRAMq55b0UQkICGN86OgjKYwn/N+E0ye+yHyXEbydJWfaGTL+Gl6XK53UWa9+4EacJ3Yj/8uWQZ2Yfq541ogaoigteuGCEL9Fy1nwbNLebzRTTc9VQPoLMzeqhbpVtQKHZZKx09NojI+MsBTidBO+pN3m9BHt6jIf1IvaKMM78rbW87K6crP0H4zkB50lAEk/yCxKBGnWs/qfaoqJCeTQehoZPYM2aV3XabNqfst1arh/dMzVpKWDNu0qH5otqhYnzBCw6wieVNmS6m8B8KlbvgCTUEuqnvX9MAc7S+RHX0cre4rfl9Vvq/qIm4ilRI9QRAXqH1aBFd4ty2H1M9y+ZkJ/Q+adGtM7Hw0MpIXnyK+CxUVNEmmqCAXWRgN+0gUet/wNAL5t/cJT8RAAAAABJRU5ErkJggg==';
}
toggleImage();
Services.prefs.addObserver(s, toggleImage, false);
addDestructor(()=> Services.prefs.removeObserver(s, toggleImage) );
  

gURLBar.focused && gURLBar.value
        ? gURLBar.handleCommand(event) : BrowserReload()
gURLBar.inputField.blur();

}


if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey){
 var s = "GetStop";
  
  cbu.setPrefs(s, cbu.getPrefs(s) == true ? false : true); 
  function toggleImage() {
   self.image = cbu.getPrefs(s)
    
   ? 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAEMklEQVR42nWVe0yTVxiHn6/llkAVW27CuBSWEFyo2dChizGaaQhGjWE4NbpsyaKN2/xDlxBj0P2h0USjZGGRgNmyRUCj69wyZTDN2GSbYZOZjRgUBuUiA+qqaDEzQNu95/u4X07Snvac7zx9z+/9vW815hg/gy0EHAFYMgpBmfHLSz4TMGbtP7jngeYPwDPzvDZz4UdYFAVvR6ek5MesWrU4aDIF0YzHFDgYDOIPBLSuhoaBjp6e69/D+QjoL5OtOaG/QnwYbLZmZjrjCgpyItesQQeaTJMPBQL65Kmvp83l+qu5tfUzN3z1BHrLjYsY0F/kWDjEypf1FputOPXw4YywnTtDiIlh3uHxMFhV5b999Gjn3cePTwrtu/vwj4D9OrQRrGZ4Y0F09IcZRUVppry8MFJTNUJDYXjYiE5FOz6r9ZER6O4ODtXWjvx06lRP6+BgaT9cOgl9miQlRjTZZY2Pf+uFgoKloXl5ZhwOsNuNiDo74dEjAx4m4litkJZm7Lnl4s3NeOvqAo1Xrtxt7+urFgnPa/K2Ns5sPpiwevX6yMJCjYQEWVkr6VpkHJTE0Ch3GRgQxeMhN5fxxPFElLx6VXxwD7fLRVNLy83rUKKg7y+x2/csXLbMQU6OEc2WLZORqqGAXV2IJAZ4IrNyuqJCj3ikpYU7Dx+2fwGV2k14Lzs21hmdleUgM9OIwmYTD2yGFSvmT9TZs3DiBDx4oHtJFOYOtH8K1doPAn05IsIpvnSQnDxmNAGrzxs2QGHhbOCxY1BeTlCA40MU5w/oqFDQGwoKTqvF4pjQcVRqJkpKYONGOH16NnTTJl3LwBSjPzci7ShX0FqBLldQKcuJQ0rXlSth717Ytm029Nw5SUcJiI5TI20SaJmCXhOo5NNpmwpNTzeuuGPH/JpWVsKRI4atMErpd4F+rKDfSvYlpj3ToBcuwPbtk4Djx+GGCLVuHRw6NLl+8eK0H/5NoCUKegleF6MczJAjNrUTIv3pzBnYt2/2VbOyYP9+2L3b2CsthQMH9Bz8LV/Fo7eroEz7BOIS4Z04qapseGlBVJRJ13PrVsNaSgZ1RVWWqjyVf4uLweuFy5fh1i16h4YCdWKneknfl1ClJ+8jWCzgN1+U+HJttuRIiyWUyEhNT9jQkFFVymbjs3KGKttnz/D4fCPfeL39Aq1ySbcS3H0d6gTzK5AojTdf7F/0qt2eJr3ArEsRDDJrKLBcuXdgIHDN7e6tgc+l09X8KyLJrm+in4rcJpEgSfQtyAoPfzc7PT07KSXF6Eoz+6m82rq7aWhvb6sZHnaJll8/lQ4gu09Vt5jWpHdJDGLihNdEY7vFkp9htycGzWb9Gf/YMypu/+io1tTZ6W3w+RqqxSuy1DoOhDn+TtQQMyUthOXSY5fKj5glNs0/Bg4asyYF6pay/PO5AfQx5e/kf+PpfWJwTbxKAAAAAElFTkSuQmCC'
   : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAEQklEQVR42n2UbUzVZRjGf+eFEIQUDjWI5rAOMlNRGIu1XjeZzTnN2fyQUMRWOy6KtWjT+cGYH3LZ6oOzWEqMBayVisTcFJ2ITjLQ4Ru5qeQYnQPIiygCR97O6Xr+ByQVfLZn/+d5/s99Pfd9X9d925hx5DuhMQZSUiDhJeh5Bm6HQdQIjPwLbVeg/R/wD8FQ8FFr2+OA0QL44E1IXwcLMgQaC2MOgemuPyDwcfB1wNXTcL5G87yMBp8AmrEYPs+12bLXrFrFAl2f29eH/eE7ftm0j8L1e9ByDZp/hwOadM4AullhFhbk5LjXeTzECcxWXo69qgqCCjAmBpvdTtDvh+FhdHJbNucm4KLScKkSfi2dAp4EdSrkXwo9nvdyd+7k2cZGxuvrcSijjrY2qJTJnTswfz5ERMDAAEGfj4mJCb/A64TReF3fH6ChTGDDOlikfL2yPi2trOjwYVI6Ownm5+OQkUMPkJMDhw5BbS20tip4eToh/4ZEkR4cHxzsFXCtTs78BaXbYPSsQJfHKezvSkreX79kCZFFRRaA06GnVq+G/fthzhzo74fToqapCW7cgFu3lABloKUFEdconIY+KCmGjm+0ef012LfP40lZZC7V1WFzu7EtXRoKOUP8b906nfn796071gOG9+ZmAv39Pv2pEXm1f8Ixj0BzP4ayHZs2EZ+URCAxEbvxcOFCOHUK9u6FPXssoh4ahjxDYnU1VFQgqVUJq74dfvpEi+xtyckVX+hlV3y8+Tktobt3weQ1NRX06Kzj6FECckRYRV2y2K7F2q8yM2s+O3IEl7wJ/l9mJo8GdMWK2UG7uqw7gd27b8quVJn+focW72xREF+WluLKy7NAH3h68qQoLIQTJx4P3xC2axccPGh21xRhg7Au6oli42lWNhTod3o8JJKWhj0rC8JU6cePh0IvKZkGM3k2e2mZ3l4V8JhqdDAg0DKT05sqggIt3Mthy8/6LlOdS0hJOgu3vF25UpyquiMjQw+IEMO2BeRy6Va4Ja+A1yssqsX+AT157lMBvBolL6XODR9C8tPGW40w05+Kpbr0dMVRAMq55b0UQkICGN86OgjKYwn/N+E0ye+yHyXEbydJWfaGTL+Gl6XK53UWa9+4EacJ3Yj/8uWQZ2Yfq541ogaoigteuGCEL9Fy1nwbNLebzRTTc9VQPoLMzeqhbpVtQKHZZKx09NojI+MsBTidBO+pN3m9BHt6jIf1IvaKMM78rbW87K6crP0H4zkB50lAEk/yCxKBGnWs/qfaoqJCeTQehoZPYM2aV3XabNqfst1arh/dMzVpKWDNu0qH5otqhYnzBCw6wieVNmS6m8B8KlbvgCTUEuqnvX9MAc7S+RHX0cre4rfl9Vvq/qIm4ilRI9QRAXqH1aBFd4ty2H1M9y+ZkJ/Q+adGtM7Hw0MpIXnyK+CxUVNEmmqCAXWRgN+0gUet/wNAL5t/cJT8RAAAAABJRU5ErkJggg==';
}
toggleImage();
Services.prefs.addObserver(s, toggleImage, false);
addDestructor(()=> Services.prefs.removeObserver(s, toggleImage) );
 

gBrowser.stop(gBrowser.selectedTab);
gURLBar.inputField.focus();
gURLBar.inputField.editor.selectAll();
}
};
this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() };
this.tooltipText="ЛКМ: Перейти|Обновить\nПКМ: Стоп-выделить";

var style = custombutton.buttonGetHelp(self).replace(/id/g, _id);
var uri = makeURI('data:text/css,'+ encodeURIComponent(style));
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
sss.loadAndRegisterSheet(uri, 0);


Вот как бы на правый клик - иконку кнопки заделать? Снят вопрос, заделал...

Отредактировано solombala (05-08-2019 08:48:13)

Отсутствует

 

№1357804-08-2019 14:25:34

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

Re: Custom Buttons

Ребят,киньте пожалуйста сылочки где можно прочитать инструкцию по установки Custom Buttons для FF68.
И где можно скачать сам Custom Buttons и конфиги.
И ДомИнспектор.
И АтрибутИнспектор.
Перехожу с FF53 на последний.

Не совсем понятно что именно ставить:
custom_buttons-0.0.7.0.0.5-fx-paxmod.xpi
custom_buttons-0.0.7.0.0.5-fx-bootstrap.xpi

Отсутствует

 

№1357904-08-2019 16:34:24

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 316
UA: Firefox 66.0

Re: Custom Buttons

questman
Описание исходной концепции https://forum.mozilla-russia.org/viewto … 88#p764788
Далее листаешь и просматриваешь посты Dumby

Отредактировано Garalf (04-08-2019 16:38:10)

Отсутствует

 

№1358004-08-2019 17:03:32

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 220
UA: Firefox 68.0

Re: Custom Buttons

questman добавлю.
https://forum.mozilla-russia.org/viewto … 43#p720043
https://forum.mozilla-russia.org/viewto … 79#p771479

Отредактировано func4ptch4 (04-08-2019 17:03:58)

Отсутствует

 

№1358104-08-2019 17:28:45

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

Re: Custom Buttons

Garalf
func4ptch4

Спасибо вам!У меня всё получилось.
А то листать форум устал.Очень много страниц и актуальную информацию
сложно найти.

Отредактировано questman (04-08-2019 17:28:59)

Отсутствует

 

№1358206-08-2019 21:59:53

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

Re: Custom Buttons

Приветствую!
Кто нибудь подскажите можно ли оживить следующие строчки:

gBrowser.selectedTab = gBrowser.mTabContainer.advanceSelectedTab(-1,true); На предыдущую вкладку

gBrowser.selectedTab = gBrowser.mTabContainer.advanceSelectedTab(1,true); На следующую вкладку

gBrowser.selectedTab = gBrowser.mTabContainer.childNodes[1]; На вторую вкладку слева

gBrowser.selectedTab = gBrowser.mTabs[gBrowser.mTabs.length - 1]; На последнюю вкладку справа

addEventListener("mouseup",(e)=>{e.button==1 && goDoCommand("cmd_copy")},false,gBrowser); СКМ копировать

А так же есть ли рабочий код для:
1.При открытии вкладки размещать её справа от текущей.
2.При закрытии вкладки перейти на левую.

Заранее благодарен!

Отредактировано questman (07-08-2019 18:34:37)

Отсутствует

 

№1358307-08-2019 19:23:29

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 68.0

Re: Custom Buttons

Dumby
Такая проблема. Нужен код  - команда на последнюю вкладку , зачем? Сессию стереть. Хотя бы просто команду - убрать посл. сессию.
Почему?https://s18.directupload.net/images/190807/tke86vpk.png ...Заманала эта показуха , нет ничего ,кроме посл. вкладки, а сессию показывает...
Как бы при закрытии всех вкладок - и сессия бы убралась? Не, не пойдет...Надо другое убирать, при запуске опять тянет пустую вкладку.
Ладно, нужен просто код -"закрыть все вкладки"

Отредактировано solombala (07-08-2019 22:42:57)

Отсутствует

 

№1358408-08-2019 01:06:30

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

solombala пишет

Заманала эта показуха , нет ничего ,кроме посл. вкладки, а сессию показывает...

Непонятно чем не угодила последняя вкладка,
но если так раздражает, тогда скрой показуху

скрытый текст

Выделить код

Код:

(popup => addEventListener("popupshowing", function ps() {
    removeEventListener("popupshowing", ps, false, popup);

    var st = Cu.import("resource:///modules/sessionstore/SessionStore.jsm", {})
        .LastSession.getState();

    if (st) st = st.windows.length > 1 || st.windows[0].tabs.length > 1
        /*
        || st.windows[0].tabs[0].entries.length > 1
        || st.windows[0].tabs[0].entries[0].url != "some url";
        */
    if (st) return;

    var menuitem = popup.querySelector("#historyRestoreLastSession");
    menuitem.hidden = true;
    addDestructor(() => menuitem.hidden = false);

}, false, popup || 1))(document.getElementById("goPopup"));

Отсутствует

 

№1358508-08-2019 07:05:59

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 68.0

Re: Custom Buttons

DumbyНе срабатывает в 68....? Может просто код- "закрыть все вкладки" , а туда код на вкл. батника. Второе у меня есть.
не угодила " восстановить сессию" , ну нет там никакой сессии, так какого рожна показывать?
Короче, если Ваш код не того, нужен код "закрыть все вкладки" , но и этого маловато, нет ли возможности иметь код, который отменит этот:

скрытый текст

Выделить код

Код:

var closer = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" ){
       var file = Services.dirsvc.get('ProfD', Ci.nsIFile); 
file.initWithPath("D:\\iceweasel\\app\\profile\\s.vbs");
file.launch(); 
}
}
};
Services.obs.addObserver(closer, "quit-application", false);


Было бы не слабо....

Отредактировано solombala (08-08-2019 10:37:49)

Отсутствует

 

№1358608-08-2019 19:12:43

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 68.0

Re: Custom Buttons

На большее не хватило...Надо бы наоборот,второй код - да? нет?

скрытый текст

Выделить код

Код:

/*CODE*/
// Закрыть все [h]вкладки[/h]
custombuttons.confirmBox(null, "Закрыть все " + [...gBrowser.tabs].length + " вкладки ?", "Да", "Отмена") &&

[...gBrowser.tabs].forEach((tab)=> gBrowser.removeTab(tab));

// Закрыть сессию...
var closer = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" ){
       var file = Services.dirsvc.get('ProfD', Ci.nsIFile); 
file.initWithPath("D:\\iceweasel\\app\\profile\\s.vbs");
file.launch(); 
}
}
};
Services.obs.addObserver(closer, "quit-application", false);

Отредактировано solombala (08-08-2019 19:15:32)

Отсутствует

 

№1358709-08-2019 07:23:59

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

solombala пишет

Надо бы наоборот,второй код - да? нет?

Ну, по «quit-application» наверно уже поздновато для confirmBox'а,
пробуй какой-нибудь топик пораньше, например типа

скрытый текст

Выделить код

Код:

((topic, id) => {
    var getObserver = () => Array.from(Services.obs.enumerateObservers(topic))
        .find(({wrappedJSObject: o}) => o && id in o);
    addDestructor(reason => {
        if (reason[5] != "e") return;
        var obs = getObserver();
        obs && Services.obs.removeObserver(obs, topic);
    });
    getObserver() || Services.obs.addObserver({
        [id]: true, __proto__: null,
        observe(cancelQuit, t, data) {
            data == "restart" || cancelQuit.data || this[["yes", "cancel", "no"][
                custombuttons.confirmBox3("Title", "Message", "Yes", "Cancel", "No")
            ]](cancelQuit);
        },
        yes() {
            // Do something if "Yes"
        },
        no() {
            // Do something if "No"
        },
        cancel(cancelQuit) {
            cancelQuit.data = true;
            alert("Abort Quit Application");
        }
    }, topic, false);
})("quit-application-requested", `${_id}:quitApplicationRequestedObserver1`);

Отсутствует

 

№1358809-08-2019 09:48:21

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 68.0

Re: Custom Buttons

Dumby
Извиняюсь, не так задача поставлена. Надо, чтобы второй код не исполнялся  без первого.

скрытый текст

Выделить код

Код:

// Закрыть сессию...
var closer = {
    observe: function(subject, topic, data) {
       if ( data == "shutdown" ){
       var file = Services.dirsvc.get('ProfD', Ci.nsIFile); 
file.initWithPath("D:\\iceweasel\\app\\profile\\s.vbs");
file.launch(); 
}
}
};
Services.obs.addObserver(closer, "quit-application", false);


Типа, if -  первый код ОК! , тогда и этот второй проходит...А, так второй код по-любасу срабатывает при выходе..

Отсутствует

 

№1358909-08-2019 12:00:31

vitalii201
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 679
UA: Firefox 68.0

Отсутствует

 

№1359009-08-2019 16:25:25

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

Re: Custom Buttons

vitalii201вот здесь есть кнопка преобразования из en в ru и наоборот, в коде во втором столбце напротив русских букв замени символы на те, которые у тебя есть в старом коде.

Отсутствует

 

№1359109-08-2019 18:43:57

vitalii201
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 679
UA: Firefox 68.0

Re: Custom Buttons

Andrey_Krropotkin, спасибо!

Отсутствует

 

№1359209-08-2019 19:47:57

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

solombala пишет

Типа, if -  первый код ОК! , тогда и этот второй проходит

Что-то мне эта идея не нравится. А если во вкладках
какое-нибудь добро с beforeunload и передумаешь.
Или если руками всё закрыто, то не надо что ли.

Вместо простого и безопасного скрытия неугодных элементов,
ты меня склоняешь «Сессию стереть» при выходе.
Нет, ну могу попробовать сочинить какую-нибудь стиралку, но не советую.

скрытый текст

Выделить код

Код:

((topic, id) => {
    var obs, getObserver = () => {
        for(var o of Services.obs.enumerateObservers(topic)) {
            var res = o.wrappedJSObject;
            if (res && id in res) return res;
        }
    }
    addDestructor(reason => {
        if (reason[5] != "e") return;
        var obs = getObserver();
        obs && obs.destroy();
    });
    (obs = getObserver()) || Services.obs.addObserver(obs = {
        [id]: true, __proto__: null, destroyed: false,
        destroy() {
            Services.obs.removeObserver(this, topic);
            this.destroyed = true;
        },
        get wins() {
            return Array.from(Services.wm.getEnumerator("navigator:browser"))
                .filter(win => win.toolbar.visible);
        },
        observe(cancelQuit, t, data) {
            data != "restart" && !cancelQuit.data && this.onQuit(true);
        },
        handleEvent() {
            this.destroyed || this.onQuit();
        },
        onQuit(fromObs) {
            var {wins} = this, multi = wins.length > 1;

            if (multi) return fromObs && this.destroy();
            this.destroy();

            var {tabs} = wins[0].gBrowser;
            if (tabs.length > 1 ) return;

            var es = JSON.parse(SessionStore.getTabState(tabs[0])).entries;
            es.length == 1 && wins[0].isBlankPageURL(es[0].url) && this.erase();
        },
        erase() {
            Services.obs.notifyObservers(null, "browser:purge-session-history");
            Cu.import("resource:///modules/sessionstore/SessionFile.jsm", {})
                .SessionFileInternal.write = () => {};
        }
    }, topic, false);
    addEventListener("DOMWindowClose", obs);
})("quit-application-requested", `${_id}:quitApplicationRequestedObserver1`);

Отсутствует

 

№1359309-08-2019 20:57:08

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 68.0

Re: Custom Buttons

Dumby
Не слабо.... Пока все как и хотелось. Не постоje речи, т.е нема слов...  Уживо хвала!

Отсутствует

 

№1359410-08-2019 21:46:07

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

Re: Custom Buttons

Приветствую!
Образовался вопрос.Есть ли возможность при помощи CustomButtons кода запретить(как это сказать!?:usch:) открепление вкладок
от основного окна.

Попробую пояснить.
Когда у тебя открыто множество вкладок и ты прыгаешь по ним щёлкая мышкой с удивлением замечаешь,что образовались новые окна.
Это происходит потому что во время щелчка мыши иногда бывают микро движения с зажатой левой кпокой.
А новому FireFox достаточно несколько пикселей чтобы сработало событие открепления.В FireFox53 например такого не было.

Заранее спасибо!

Отсутствует

 

№1359510-08-2019 23:24:20

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

questman
Может что-нибудь простенькое подойдёт

скрытый текст

Выделить код

Код:

((obj, key) => {
    var meth = obj[key], func = meth.bind(obj);
    obj[key] = (...args) => new Error().stack.includes("dragend") ? null : func(...args);
    addDestructor(() => obj[key] = meth);
})(gBrowser, "replaceTabsWithWindow");

Отсутствует

 

№1359611-08-2019 00:29:14

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

Re: Custom Buttons

Dumby пишет

questman
Может что-нибудь простенькое подойдёт

скрытый текст

Выделить код

Код:

((obj, key) => {
    var meth = obj[key], func = meth.bind(obj);
    obj[key] = (...args) => new Error().stack.includes("dragend") ? null : func(...args);
    addDestructor(() => obj[key] = meth);
})(gBrowser, "replaceTabsWithWindow");

Это просто шикарно!Всё работает прекрасно.

Спасибо!

Кстати благодаря этому обнаружил для себя новую функцию связанную со вкладками.
Если вкладка одна, то можно дёргая её мышкой позиционировать окно браузера по левую
или по правую сторону.Вот так прикол, только что узнал!:mad:

Отредактировано questman (11-08-2019 00:38:25)

Отсутствует

 

№1359712-08-2019 10:29:48

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 68.0

Re: Custom Buttons

Dumby
Вопрос...

скрытый текст
Можно ли сделать полный портабл, если в кнопках используются  коды , ведущие к EXE, типа nircmd.exe и memreduct.exe  . Они в своих папках , если папки в профиль
переместить, они все-равно будут к диску привязаны? ...Батники и VBS , к примеру, так они в профиле и с ними нет проблем , а с этими прогами - есть...
Короче, батники в этих папках (nircmd и memreduct) сразу глючат без полного пути...Приходится ставить фокс только на определенное место, меня это и не парит, но есть деятели ...типа,  "не портабл полный" и это ни есть гуд и т.д. Да, батники только в папе NIR , из memreduct удалось убрать, там только exe, все-равно лажа...

Отредактировано solombala (12-08-2019 10:35:26)

Отсутствует

 

№1359812-08-2019 12:41:34

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

solombala
Вот вроде подробнее чем обычно расписано, но всё равно не улавливаю.
Какая-то несвязанная последовательность в вопросе.

Скажем так: распаковал Iceweasel_68_x32.rar в субпапку на диске Цэ,
жму кнопку — нормально всё алертится.

скрытый текст

Выделить код

Код:

var nir = Services.dirsvc.get("GreD", Ci.nsIFile);
nir.append("nir");

alert(
    [...nir.directoryEntries].map(file => file.path).join("\n")
);

Отсутствует

 

№1359912-08-2019 13:20:07

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 68.0

Re: Custom Buttons

Dumby
Если это не использовать , то и проблем нет. Этот код в кн. "Очистка памяти" и как ?  Как без привязки к диску?

скрытый текст
var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
         file.initWithPath("D:\\iceweasel\\app\\nir\\d.vbs");
         file.launch();
         file.initWithPath("D:\\iceweasel\\app\\nir\\m.vbs");
         file.launch();

Там папка NIR участвует и не только...Какая , к черту, портатабельность? Никакая...Плюс, в самих vbs дергается  memreduct.exe , она тоже в папке и к профилю не привязана... Короче, сижу на ж@пе ровно и не дергаюсь..

Отредактировано solombala (12-08-2019 13:25:52)

Отсутствует

 

№1360012-08-2019 20:17:51

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 60.0

Re: Custom Buttons

У тебя берется путь к профилю и....
var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
.... никак не используется.
file.initWithPath("D:\\iceweasel\\app\\nir\\d.vbs");

Выделить код

Код:

let prof = Services.dirsvc.get('ProfD', Ci.nsIFile);  // нашел путь к профилю
    prof.initWithPath("prof.path + "\\nir\\d.vbs");  // в профиле лежит папка nir где лежить нужный файлег
    prof.launch();

Там папка NIR участвует и не только...Какая , к черту, портатабельность? Никакая...Плюс, в самих vbs дергается  memreduct.exe , она тоже в папке и к профилю не привязана... Короче, сижу на ж@пе ровно и не дергаюсь..

Зачем дважды подряд вызывать разные скрипты, если логично записать вызов второго  скрипта в конец первого.
Все переменные можно в самом скрипте находить и присвоить. яхз как оно там в VBS, но в cmd\bat определить где лежить выполняемый скрипт
можно через  %~dp0 .
Ну а, у VBS возможностей куда больше чем в cmd/bat и есть не один способ узнать, откуда запущен скрипт.

Отредактировано mokujin (12-08-2019 20:22:54)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

Board footer

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