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

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№737616-01-2014 11:39:03

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1005
UA: Firefox 24.0

Re: Custom Buttons

помогите решить такую проблемку: есть код очищающий пункты истории дополнения по маске

Выделить код

Код:

if(event.button == 0 && !event.altKey && event.ctrlKey && !event.shiftKey) {
            var str = "кино1";
            lmnpopHistory.open();
            const statement = lmnpopHistory.dbConn.createStatement(
            "DELETE FROM history WHERE title NOT LIKE '%" + str + "%'");
            statement.executeAsync();
            statement.finalize();
            lmnpopHistory.close();
            lmnpopHistory.changed = true;
                            }

как его доработать, если таких масок несколько? Т.е. еще будут str1 и str2.

Отсутствует

 

№737716-01-2014 11:49:35

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 26.0
Веб-сайт

Re: Custom Buttons

Спасибо, okkamas_knife,
  Касательно индикации, то здесь всё очень просто: достаточно показывать только число оставшихся в контейнере вкладок, а режим (Вкл/Выкл) можно отражать сотней способов - цветом фона, фонта, стилем или весом фонта и т.д.
  Касательно алгоритма:
Основная пользовательская операция - всего одна - загрузка текущей вкладки УРЛом из контейнера, остальные же операции - экзотичны.
В своё время bunda1 показал мне как реализовать кликабельную подсказку, так что дефицита кликов нет :)
  Теперь насчёт функционала в целом:
1. Скрытие вкладок работает очень хорошо, здесь имхо ничего дополнительного делать не надо.
2. Надо что-то подправить, чтобы УРЛ ссылок тоже записывались в контейнер правильно (для закладок они записываются правильно, а для ссылок что-то мешает им писаться верно).
3. Основной момент - это подгрузка вкладок из контейнера. Как я понял из кода (а я ещё по-прежнему дилетант здесь), загрузка инициируется событием закрытия вкладки и поэтому здесь это срабатывает лишь при закрытии определённой вкладки (имхо - потому что событие закрытия привязывается к какой-то определённой вкладке, но это ИМХО, могу и ошибиться).
Поэтому мне кажется, что требуется другой механизм инициации подгрузки - например по интервалу - каждые 200мс подсчитывается общее кол-во вкладок, и если их меньше максимума и контейнер не пустой - это и будет инициацией подгрузки - т.е. открытия новой фоновой вкладки. При этом подходе нет привязки к событию закрытия, т.е. нет привязки к какой-то вкладке.
4. Очень элегантным имхо решением было бы использование в качестве информера (со всем семейством кликов/меню и т.д.) активной вкладки. Ведь если она активна, то мне не нужно знать ни title, ничего - она ведь на экране :) В этом случае саму кнопку можно скрыть (Infocatcher научил меня как это делать и даже для такого дилетанта как я - это просто, заявляю ответственно). Но сначала имхо надо реализовать пункты 2 и 3... А элегантность можно отложить на потом :)

Отредактировано difabor (16-01-2014 11:56:52)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№737816-01-2014 16:40:50

burst
Участник
 
Группа: Members
Зарегистрирован: 15-01-2014
Сообщений: 3
UA: Firefox 26.0

Re: Custom Buttons

okkamas_knife пишет

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

Содержимое стабильно;; переделывать просить не буду. Нужно именно для той структуры как указано.

Отсутствует

 

№737916-01-2014 17:50:56

burst
Участник
 
Группа: Members
Зарегистрирован: 15-01-2014
Сообщений: 3
UA: Firefox 26.0

Re: Custom Buttons

okkamas_knife пишет

frm.name="то что хотим вписать";

Только .value

Спасибо.

Отсутствует

 

№738016-01-2014 21:44:51

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

Re: Custom Buttons

voqabuhe пишет

bunda1
В [nightly] перестало работать добавление и удаление закладок двойным ПКМ. Можешь поправить?

Сейчас попробовал и вроде работает, разве только в папке Часто посещаемые нет.

Отсутствует

 

№738116-01-2014 22:36:15

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

Re: Custom Buttons

difabor
Список в tabArray И вот тут можно почитать про то что такое Массивы
Кликом можно вызвать список(если он есть) вот так:

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ................................
this.onclick = function(e) {

     // действие при клике ЛКМ ....
     if ( e.button == 0 ) {
          alert( tabArray );
          };
};

И у меня ссылки нормально открываются.


Пожалуйста пиши как то лаконичней а то мне выносит мозг от такого обилия текста и вопросов.

Отредактировано bunda1 (16-01-2014 22:45:14)

Отсутствует

 

№738216-01-2014 23:24:21

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 26.0
Веб-сайт

Re: Custom Buttons

bunda1 пишет

И у меня ссылки нормально открываются.

У меня те ссылки, которые не пропустила кнопка, (т.е. которые в контейнере) открываются неверно при закрытии таба - вместо них открывается пустая вкладка (У меня - Fast Dial)
Когда я отключил Fast Dial - вообще даёт некорректный адрес.

Отредактировано difabor (16-01-2014 23:32:48)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№738316-01-2014 23:44:27

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

Re: Custom Buttons

Не контейнере а в массиве. Да со ссылками ситуация не понятная не знаю в чём тут дело. И что показывает alert( tabArray ); перед открытием такой пустой вкладки.

Отсутствует

 

№738417-01-2014 00:04:20

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 26.0
Веб-сайт

Re: Custom Buttons

bunda1 пишет

Не контейнере а в массиве. Да со ссылками ситуация не понятная не знаю в чём тут дело. И что показывает alert( tabArray ); перед открытием такой пустой вкладки.

alert выдаёт на русском языке: "Новая вкладка,Новая вкладка".
Когда же я включаю FastDial, то получаю УРЛ этого FastDial - chrome://fastdial/content/fastdial.html
Такое впечатление, что в:
tabArray.push( e.type == 'TabOpen' ? tab.label : tab.linkedBrowser.contentDocument.location );
что вместо tab.label нужно другое...
А может, вместо  tab.linkedBrowser.contentDocument.location...
Когда перехватывается закладка - всё ОК


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№738517-01-2014 00:09:54

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

Re: Custom Buttons

Так что ты из Fast Dial ссылки открываешь.

Отсутствует

 

№738617-01-2014 00:11:26

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 29.0

Re: Custom Buttons

bunda1 пишет

Сейчас попробовал и вроде работает, разве только в папке Часто посещаемые нет.

Спасибо. Что и удаляет? У меня только добавляет в корневые папки, те которые находятся непосредственно на панели закладок, а во вложенные нет. И нигде не удаляет. Попробую у себя в профиле поискать, может какой конфликт опять возник.

Отсутствует

 

№738717-01-2014 00:16:51

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

Re: Custom Buttons

Inko7 пишет

еще будут str1 и str2

Может попробуй

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

Выделить код

Код:

"DELETE FROM history WHERE "
+ "title NOT LIKE '%" + str  + "%' AND "
+ "title NOT LIKE '%" + str1 + "%' AND "
+ "title NOT LIKE '%" + str2 + "%'"

Отсутствует

 

№738817-01-2014 00:17:49

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 26.0
Веб-сайт

Re: Custom Buttons

bunda1 пишет

Так что ты из Fast Dial ссылки открываешь.

Нет, конечно! Я открываю ссылки из обыкновенных сайтов - перепробовал много.
Просто когда включён Fast Dial он перехватывает все пустые вкладки и подсовывает себя вместо них. Поэтому я его отключил.


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№738917-01-2014 00:20:25

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 29.0

Re: Custom Buttons

bunda1

bunda1 пишет

Сейчас попробовал и вроде работает, разве только в папке Часто посещаемые нет.

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

Отсутствует

 

№739017-01-2014 00:22:51

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

Re: Custom Buttons

Не новая наверно:

Выделить код

Код:

function manageBookmarks(e) {

    var target = e.originalTarget;

    // эсли это закладка из папки закладок ....  
    if ( !!target._placesNode && ( target.localName == "menuseparator" || target.localName == "menuitem") ) {
  
         var type = e.type;
         var bookMenu = target.parentNode;         
                  
         // левый клик открывает закладку в новой или добавляет текущую вкладку в закладки удержанием левой кнопки ....     
         if ( e.button == 0 && ( type == 'mousedown' || type == 'mouseup' ) ) {              
              
              if ( type == 'mouseup' ) e.preventDefault();

              if ( type == 'mousedown' ) {
                   this.addBook = false;                                      
                   
                   addEventListener("drag", function(e) {  // сбросить таймер при перетаскивание закладки
                      window.clearTimeout( this.addBookTimer );
                      removeEventListener( e.type, arguments.callee, true ); 
                   }, true );                    
                   
                   this.addBookTimer = setTimeout(function( self ) {  // таймер запускает добавление закладки 
                       self.addBook = true;                       
                       addBookmark(); 
                   }, 400, this ); 
                   
                   }
             
              if ( type == 'mouseup' && !this.addBook ) {
                   
                   window.clearTimeout( this.addBookTimer );
                   
                   // открыть закладку в новой или в текущей вкладке если это указанная вкладка
                   var itemUri = target._placesNode.uri; 
                   var bookmarklet = ( itemUri.substr(0, 11) == "javascript:" ); 
                   var current = ["about:newtab", "about:blank", "chrome://browser/content/bookmarks/bookmarksPanel.xul"];
                   ( bookmarklet || current.indexOf( content.location.href ) !== -1 || e.ctrlKey ) 
                   ? gBrowser.loadURI( itemUri ) 
                   : gBrowser.addTab( itemUri );                   
                   
                   }
              
              // добавить страницу в закладки в текущей папке     
              function addBookmark() {                
                 var index = PlacesUtils.bookmarks.getItemIndex( target._placesNode.itemId ) + 1;
                 var docTitle = ( content.document.title || gBrowser.mCurrentTab.label ).substr(0, 50);
                 var folderId = PlacesUtils.getConcreteItemId( target.parentNode.parentNode._placesNode );
                 var currentUri = Services.io.newURI( content.location, null, null );
                 PlacesUtils.bookmarks.insertBookmark( folderId, currentUri, index, docTitle );       
              }                   
                   
              };
       
         // средний клик открвыяет закладку в текущей вкладке ....    
         if ( e.button == 1 && type == 'mouseup' && target.localName !== "menuseparator" ) {             
              
              addEventListener("click", function(e) { // обработчик блокирует действие по умолчанию для клика
                 e.stopPropagation();
                 gBrowser.loadURI( target._placesNode.uri );  // открыть закладку             
                 removeEventListener( e.type, arguments.callee, true ); 
              }, true );              

              };
              
         // двойной правый клик удаляет закладку или разделитель ....
         if ( e.button == 2 && type == 'mouseup' ) {
              if ( bookMenu.open == true ) {
                   e.preventDefault();
                   
                   setTimeout(function() { document.getElementById("placesContext").hidePopup() }, 0);                                  
                   try { PlacesUtils.bookmarks.removeItem( target._placesNode.itemId ) } catch(e) {};
                   }
              bookMenu.open = true;
              setTimeout(function() { bookMenu.open = false }, 400 ); // сбросить флаг по таймеру
              };
         
         // автоматически закрыть все меню закладок при уходе курсора ....     
         if ( bookMenu.stopListener ) return; // блокировать повторный запуск обработчика для текущего меню закладок
              bookMenu.stopListener = true;    
       
              // обработчик закрывает меню при ухода мыши с меню и удаляет себя
              addEventListener("mouseover", function close(e) { 
                 if ( !/menu/.test( e.originalTarget.nodeName ) ) { 
                     
                      clearTimeout( bookMenu.timer );
                      
                      bookMenu.timer = setTimeout(function() {
                         removeEventListener("mouseover", close, false, window );                  
                         bookMenu.stopListener = false; // отключить блокировку запуска                    

                         for ( var node = bookMenu; node; node = node.parentNode ) { // закрыть все родственные меню закладок
                               if ( node.nodeName == 'menupopup' ) node.hidePopup(); 
                               }    
                   
                      }, 450 ); // закрыть меню через ms
                      }
                     
                 else clearTimeout( bookMenu.timer );              
                
              }, false );
         }               
};         
addEventListener("mouseup", manageBookmarks, true );
addEventListener("mousedown", manageBookmarks, true );

Отсутствует

 

№739117-01-2014 00:41:58

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 26.0
Веб-сайт

Re: Custom Buttons

Уважаемый bunda1, кроме того я обнаружил следующее:
1. tabArray.push( (e.type == 'TabOpen') ? tab.label : tab.linkedBrowser.contentDocument.location ); идёт всегда на tab.label, т.е. всегда e.type == 'TabOpen
2. tab.linkedBrowser.contentDocument.location он вообще не "любит" почему-то.
    Я просто для отслеживания создал ещё и var tArray = [] и туда пытался пушнуть tab.linkedBrowser.contentDocument.location, а алерт написал так:
    alert( tabArray +" | "+ tArray) - так алерт вообще не появлялся!


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№739217-01-2014 01:08:56

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 29.0

Re: Custom Buttons

bunda1 пишет

Не новая наверно:

Попробовал этот код на чистом профиле, у меня всё равно не работает. :(

Отсутствует

 

№739317-01-2014 11:08:10

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1005
UA: Firefox 24.0

Re: Custom Buttons

Dumby
Спасибо, вроде работает!!! :beer:

Отсутствует

 

№739417-01-2014 20:04:11

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

Re: Custom Buttons

difabor
1. А вот и нет, не всегда e.type == 'TabOpen после старта при восстановлении сессии e.type будет и SSTabRestoring. В коде как ты наверно заметил два обработчика которые отслеживают открытие вкладок и каждый требует свой способ получения адреса вкладки которая открывается. При открытии вкладки сперва открывается новая пустая вкладка а потом в ней уже вкладка с нужным адресом и отсюда проблемы с получением адреса этой вкладки. Для addEventListener("TabOpen"... почему то это e.target.label
И если у тебя e.target.label отдаёт Новая вкладка что обычно бывает при восстановлении сессии то тебе надо запустить мой код на чистом профиле для проверки возможного конфликта с другим кодом или расширением,
2. Если вообще не появился алерт значит в коде ошибка.

Ну да ладно попробую сделать код без addEventListener("TabOpen"...

Отредактировано bunda1 (17-01-2014 20:05:50)

Отсутствует

 

№739517-01-2014 21:05:22

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 26.0
Веб-сайт

Re: Custom Buttons

bunda1 пишет

difabor
1. А вот и нет, не всегда e.type == 'TabOpen после старта при восстановлении сессии e.type будет и SSTabRestoring. В коде как ты наверно заметил два обработчика которые отслеживают открытие вкладок и каждый требует свой способ получения адреса вкладки которая открывается. При открытии вкладки сперва открывается новая пустая вкладка а потом в ней уже вкладка с нужным адресом и отсюда проблемы с получением адреса этой вкладки. Для addEventListener("TabOpen"... почему то это e.target.label
И если у тебя e.target.label отдаёт Новая вкладка что обычно бывает при восстановлении сессии то тебе надо запустить мой код на чистом профиле для проверки возможного конфликта с другим кодом или расширением,
2. Если вообще не появился алерт значит в коде ошибка.

Ну да ладно попробую сделать код без addEventListener("TabOpen"...

Уважаемый bunda1, я ведь не претендую на истину (с моими-то убогими знаниями) - мне хотелось помочь (быть может), а получилось наоборот...
Я знаю, что если не появился алерт, значит ошибка. Я это и обнаружил: если пытаться сделать:
tArray.push(tab.linkedBrowser.contentDocument.location), то в этом случае alert( tabArray +" | "+ tArray) просто не появлялся при клике.
Из этого я и сделал вывод, что e.type == 'TabOpen' не "любит" tab.linkedBrowser.contentDocument.location :)
Что касается чистого профиля, то я не умею его создавать.
В своё время Вы дали мне ссылку на экспериментальные версии но я не знаю, что будет если я такую инсталлирую и как можно будет вернуться к старой...


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№739617-01-2014 21:30:53

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

Re: Custom Buttons

Инсталлировать не надо, это портативная версия Mozilla Firefox, Portable Edition | PortableApps.com - Portable software for USB, portable and cloud drives

Отредактировано bunda1 (17-01-2014 21:37:01)

Отсутствует

 

№739717-01-2014 21:48:21

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 26.0
Веб-сайт

Re: Custom Buttons

Я её скачал. Если я сейчас запущу скаченный файл, то запустится ещё один Файрфокс, или новый Файрокс заместит текущий?
Если заместит текущий, то как к нему вернуться?


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№739817-01-2014 21:58:57

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

Re: Custom Buttons

Не заменит но основной Файрфокс выключи перед запуском портативной.

Отсутствует

 

№739917-01-2014 22:15:44

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 26.0

Re: Custom Buttons

bunda1
А не подскажешь нет ли случайно чего нибудь такого, нажал на кнопку и открылось x адресов заранее в неё вбитых, до панели закладок не очень оперативно добираться.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№740017-01-2014 22:20:21

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 356
UA: Firefox 26.0

Re: Custom Buttons

villa7 пишет

bunda1
А не подскажешь нет ли случайно чего нибудь такого, нажал на кнопку и открылось x адресов заранее в неё вбитых, до панели закладок не очень оперативно добираться.

/*CODE*/
getBrowser (). addTab ("http://forum.mozilla-russia.org/index.php");
getBrowser (). addTab ("http://forum.mozilla-russia.org/index.php")
К примеру.

Отсутствует

 

Board footer

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