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

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№662621-07-2013 13:57:09

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

Re: Custom Buttons

villa7

Выделить код

Код:

// Запретить дублирование вкладок ................................
addEventListener("TabOpen", function (e) { 
   var newTab = e.target;
   if ( newTab.label == 'Новая вкладка') newTab.label = Application.prefs.getValue("browser.newtab.url", 0);

   for ( var i = 0; i < gBrowser.tabs.length; i++ ) {
         var mTab = gBrowser.mTabs[i];
         if ( newTab.label == mTab.linkedBrowser.currentURI.spec ) {
              gBrowser.selectedTab = mTab;
              setTimeout(function() { gBrowser.removeTab( newTab ) }, 20); 
              break;
              }
         }
}, true, gBrowser.tabContainer );

Отсутствует

 

№662721-07-2013 16:33:02

WatsonRus
Участник
 
Группа: Members
Зарегистрирован: 10-03-2009
Сообщений: 286
UA: unknown 0.0

Re: Custom Buttons

Pony_Smile_Pack пишет

№113 Find

Не айс. Образец поиска мне нужно куда-то вводить. А эта либо выделенное ищет, либо из буфера берет. :(

bunda1
За "Автовыделение" спасибо.

А с кнопкой "Highlight" поделать вообще ничего нельзя? Она для меня поудобнее была... и ведь, зараза, уже второй раз отваливается... первый раз после какой-то 8-й или 10-й версии, что ли, был...


Firefox ESR

Отсутствует

 

№662821-07-2013 17:01:00

Pony_Smile_Pack
Участник
 
Группа: Members
Зарегистрирован: 13-01-2012
Сообщений: 1144
UA: Firefox 22.0

Re: Custom Buttons

WatsonRus пишет

Не айс. Образец поиска мне нужно куда-то вводить. А эта либо выделенное ищет, либо из буфера берет.

а, ну мне удобно потому что набираю искомое слово на странице →оно выделяет дефолтным поиском(искать текст по мере его набора) →потом выделяю мышью и (благодаря AutoCopy) жму именно на эту Find
-----------------
или скажем набираю искомое слово на странице →оно выделяет дефолтным поиском → потом открываю(жестом) дефолтный поиск по странице, там набранное уже отражается(благодаря AutoCopy) → и нажимаю выделить все
4692432.jpg

Отредактировано Pony_Smile_Pack (21-07-2013 17:27:16)

Отсутствует

 

№662921-07-2013 17:07:42

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

Re: Custom Buttons

WatsonRus пишет

А с кнопкой "Highlight" поделать вообще ничего нельзя? Она для меня поудобнее была... и ведь, зараза, уже второй раз отваливается... первый раз после какой-то 8-й или 10-й версии, что ли, был...

Позже попробую, сейчас нет времени.

Отсутствует

 

№663021-07-2013 19:10:18

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

Re: Custom Buttons

bunda1

запретить дублирование вкладок, если вкладка уже есть то чтобы не открывалась новая а переключалась на уже открытую,

Сейчас открытие дублей блокируется, но не переключается на уже открытую. Чувствую что такое уже не выполнимо. Мне для чего нужно было, давно удалил кнопку открытия новой вкладки потому как не нравится как открывается домашняя страница с диалами, долго открывается , белая страница моргает, неприятно. и жестом из за этого тоже не пользуюсь, потому держу постоянно открытой домашнюю страницу с диалами и открываю наведением мыши, а захотелось жестом с любой страницы на неё переключаться, чтобы в угол каждый раз не лазить наводить мышкой. Не судьба видать:)


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

Отсутствует

 

№663121-07-2013 19:34:21

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

Re: Custom Buttons

villa7
Нормальные герои всегда идут в обход :D
Попрубуй жест:

Выделить код

Код:

for ( var i = 0; i < gBrowser.tabs.length; i++ ) {
         var mTab = gBrowser.mTabs[i];
         if ( mTab.linkedBrowser.currentURI.spec == 'chrome://desktop/content/desktop.html') {
              gBrowser.selectedTab = mTab;
              break;
              }
         }

Добавлено 21-07-2013 19:35:06
P.S. у меня кстати Запретить дублирование вкладок работает и переключает.

Отредактировано bunda1 (21-07-2013 19:35:51)

Отсутствует

 

№663221-07-2013 19:42:13

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 21.0

Re: Custom Buttons

villa7 пишет

Сейчас открытие дублей блокируется, но не переключается на уже открытую. Чувствую что такое уже не выполнимо. Мне для чего нужно было, давно удалил кнопку открытия новой вкладки потому как не нравится как открывается домашняя страница с диалами, долго открывается , белая страница моргает, неприятно. и жестом из за этого тоже не пользуюсь, потому держу постоянно открытой домашнюю страницу с диалами и открываю наведением мыши, а захотелось жестом с любой страницы на неё переключаться, чтобы в угол каждый раз не лазить наводить мышкой. Не судьба видать:)

bunda1 пишет

P.S. у меня кстати Запретить дублирование вкладок работает и переключает.

У меня тоже работает, приберег ее себе, полезная:)

Отсутствует

 

№663321-07-2013 20:28:50

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

Re: Custom Buttons

bunda1
Ура!!! Если честно не надеялся что такая благодать получится, в очередной раз снимаю шляпу, это надо знать что для меня было открывать страницу с диалами, а тут мгновенно, раз и вот она, спасибо. Сейчас отойду от радости попробую разобраться почему у меня наполовину код блокировки дубликатов работал. Можно тебя еще попросить глянуть Рабочий стол - https://addons.mozilla.org/ru/firefox/addon/desktop/ чтобы простым ЛКМ открывал в новой вкладке, а то иногда забываю диал дернуть и домашнюю по новой открывать приходиться, на страницу расширения писал, ни слуху ни духу. Может какой код дополнительный , это же вроде как закладки, если не трудно.


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

Отсутствует

 

№663422-07-2013 20:23:15

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

Re: Custom Buttons

villa7 пишет

Можно тебя еще попросить глянуть Рабочий стол - https://addons.mozilla.org/ru/firefox/addon/desktop/ чтобы простым ЛКМ открывал в новой вкладке.....

Выделить код

Код:

function desktopClick(e) {
    if ( e.button == 0 && content.location.href == 'chrome://desktop/content/desktop.html' ) {
         e.preventDefault();
         gBrowser.selectedTab = gBrowser.addTab( e.target.parentNode.href );
         }
};
addEventListener('click', desktopClick, true, gBrowser );

Добавлено 22-07-2013 20:41:28
И вот подправил жест мыши, что бы открывал desktop если он не открыт:

Выделить код

Код:

var desktopTab = true;  
for ( var i = 0; i < gBrowser.tabs.length; i++ ) {
         var mTab = gBrowser.mTabs[i];
         if ( mTab.linkedBrowser.currentURI.spec == 'chrome://desktop/content/desktop.html') {
              gBrowser.selectedTab = mTab;
              var desktopTab = false;  
              break;
              }
         }
if ( desktopTab ) gBrowser.selectedTab = gBrowser.addTab('chrome://desktop/content/desktop.html');

Отредактировано bunda1 (22-07-2013 20:51:45)

Отсутствует

 

№663522-07-2013 20:42:50

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

Re: Custom Buttons

bunda1
Спасибо, разобрался и с блокировкой дублей, всё работает, и блокирует и переключает, теперь всё стало как хотелось.Спасибо ещё раз за всё.
П.С. Я кстати таки остановился именно  на жесте, мне показалось он шустрее переключат что ли. Спасибо.

Отредактировано villa7 (22-07-2013 20:48:34)


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

Отсутствует

 

№663625-07-2013 22:21:33

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

Re: Custom Buttons

В этом сообщении Infocatcher написал рабочий код для проверки обновлений при определенном нажатии.
Никак не могу переделать код, чтобы он работал при нажатии на обычную CB кнопку :sick:
Вот что должно получиться в итоге: открывается вкладка с about:addons, жмется проверка обновлений и всё.
Подскажите.

Отсутствует

 

№663725-07-2013 22:36:56

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 22.0

Re: Custom Buttons

Inko7 пишет

открывается вкладка с about:addons, жмется проверка обновлений и всё.

Check for Addons Updates
Или простой вариант:

Выделить код

Код:

var tab = gBrowser.selectedTab = gBrowser.addTab("about:addons");
var browser = tab.linkedBrowser;
browser.addEventListener("load", function load(e) {
    var doc = e.target;
    if(doc.documentURI == "about:blank")
        return;
    browser.removeEventListener(e.type, load, true);
    doc.getElementById("utils-updateNow").doCommand();
}, true);

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№663826-07-2013 10:44:59

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

Re: Custom Buttons

Infocatcher
Простой вариант устроил на 100%! Спасибо.

Отсутствует

 

№663926-07-2013 16:41:20

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

Re: Custom Buttons

Infocatcher
Попробовал вставить в твой код проверку пустой текущей вкладки (взял из темы со сниппетами): если пустая вкладка, то запустить в ней; если нет, то запустить в новой активной.
Так почему-то код перестал запускать проверку обновлений, если текущая вкладка была пустой. Если не пустая, то все ок. Вот код:

Выделить код

Код:

function addcheck(e){
    if ( e.button !== 1 ) return;
    
    if( getBrowser().currentURI.spec == "about:blank") { var tab = loadURI ("about:addons"); }
        else
        { var tab = gBrowser.selectedTab = gBrowser.addTab("about:addons"); };

    var browser = tab.linkedBrowser;
    browser.addEventListener("load", function load(e) {
    var doc = e.target;
    if(doc.documentURI == "about:blank") return;
    browser.removeEventListener(e.type, load, true);
    doc.getElementById("utils-updateNow").doCommand();
    }, true);
};

Что тут не так?

Отредактировано Inko7 (26-07-2013 16:44:11)

Отсутствует

 

№664026-07-2013 17:08:53

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 22.0

Re: Custom Buttons

Inko7
Вот здесь не возвращает текущую вкладку:

Выделить код

Код:

var tab = loadURI ("about:addons");

Должно быть

Выделить код

Код:

var tab = gBrowser.selectedTab;
loadURI("about:addons");

И лучше вот так:

Выделить код

Код:

var url = "about:addons";
var tab;
if(
    !gBrowser.webProgress.isLoadingDocument
    && (
        "isBlankPageURL" in window
            ? isBlankPageURL(content.location.href)
            : content.location.href == "about:blank"
    )
) {
    tab = gBrowser.selectedTab;
    loadURI(url);
}
else {
    tab = gBrowser.selectedTab = gBrowser.addTab(url);
}

var browser = tab.linkedBrowser;
browser.addEventListener("load", function load(e) {
    var doc = e.target;
    if(doc.documentURI == "about:blank")
        return;
    browser.removeEventListener(e.type, load, true);
    doc.getElementById("utils-updateNow").doCommand();
}, true);

Потому как загружающиеся вкладки тоже сначала имеют адрес "about:blank".


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№664126-07-2013 17:20:45

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

Re: Custom Buttons

Infocatcher
Спасибо, сейчас все работает, как надо!

Отсутствует

 

№664226-07-2013 20:47:04

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

Re: Custom Buttons

toxa
Попробуй запустить с таймером:

Выделить код

Код:

setTimeout(function() { 

// Bookmarks/History/Homepage/URL/Search открывать в новой вкладке ......................................
eval("whereToOpenLink = " + whereToOpenLink.toString()
  .replace(/return "current";/g, "{"+(function() {
    var node = e && e.originalTarget;
    while (node) {
      switch (node.id) {
        case "bookmarksMenuPopup":
        case "goPopup":
        case "appmenu_bookmarksPopup":
        case "appmenu_historyMenupopup":
        case "personal-bookmarks":
        case "bookmarks-menu-button":
        case "historymenu_history":
        case "home-button":
        case "page-proxy-stack":
        case "go-button":
        case "urlbar-go-button":
        case "PopupAutoCompleteRichResult":
        case "searchbar":
        case "PopupAutoComplete":
          return "tab";
      }
      node = node.parentNode;
    }
    return "current";
  }).toString().replace(/^.*{|}$/g, "")+"}")
);

//Bookmarklet 
eval("openLinkIn = " + openLinkIn.toString()
  .replace(/(?=if \(where == "save"\))/, 'if (url.substr(0, 11) == "javascript:") where = "current";')
  .replace(/(?=var loadInBackground)/, 'if (w.gBrowser.currentURI.spec == "about:blank" && !w.gBrowser.mCurrentTab.hasAttribute("busy")) where = "current";')
);

//
document.getElementById("sidebar-box").addEventListener("load", function(event) {
  var document = event.target;
  if (document.location == "chrome://browser/content/bookmarks/bookmarksPanel.xul"
      || document.location == "chrome://browser/content/history/history-panel.xul") {
    eval("document.defaultView.whereToOpenLink = " + document.defaultView.whereToOpenLink.toString()
      .replace(/return "current";/g, 'return "tab";')
    );
    eval("document.defaultView.openLinkIn = " + document.defaultView.openLinkIn.toString()
      .replace(/(?=if \(where == "save"\))/, 'if (url.substr(0, 11) == "javascript:") where = "current";')
      .replace(/(?=var loadInBackground)/, 'if (w.gBrowser.currentURI.spec == "about:blank" && !w.gBrowser.mCurrentTab.hasAttribute("busy")) where = "current";')
    );
  }
}, true);

//
eval("gURLBar.handleCommand = " + gURLBar.handleCommand.toString()
  .replace(/aTriggeringEvent\s*&&\s*aTriggeringEvent.altKey/, "!($&)")
  .replace("aTriggeringEvent.preventDefault();", "")
  .replace("aTriggeringEvent.stopPropagation();", "")
);
}, 1500);

Отсутствует

 

№664327-07-2013 00:43:22

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 261
UA: Firefox 9.0

Re: Custom Buttons

bunda1 пишет

toxa
Попробуй запустить с таймером:

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

Отсутствует

 

№664428-07-2013 01:27:16

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

Re: Custom Buttons

voqabuhe пишет
bunda1 пишет

А если месте ПКМ и ЛКМ или наоборот, или нажать ЛКМ на закладку и подержать 300ms. Мне с горячей клавишей не нравится.

Да и мне с горячей не нравиться, просто я про другие варианты не подумал.:) Тогда попробуй сделать ЛКМ с задержкой, меньше движений, удобней. ИМХО. А там смотри, как считаешь лучше, в принципе все предложенные тобой варианты нормальные.

ЛКМ с задержкой на закладке или разделителе + двойным правым можно удалять разделители:

Выделить код

Код:

/* Открывать левым кликом закладку в новой вкладке или средним кликом в текущей вкладке, 
добавлять страницу в закладки в текущей папке удержанием левой кнопки на закладке или разделителе,
двойным правым кликом удалять закладки или разделители не закрывая меню закладок  */
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(_this) {  // таймер запускает добавление закладки 
                       _this.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("TabOpen", function(e) { // удалить новую вкладку которую открывает средний клик
                 if ( e.target.label == target._placesNode.uri ) {
                      e.target.style.display = 'none';
                      removeEventListener( e.type, arguments.callee, true ); 
                      setTimeout(function() { gBrowser.removeTab( e.target ) }, 1000);
                      }     
              }, true );
              
              gBrowser.loadURI( target._placesNode.uri ); // открыть закладку
              };
              
         // двойной правый клик удаляет закладку или разделитель ....
         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 ); // сбросить флаг по таймеру
              
              document.getElementById("identity-box").setAttribute("style", "background: transparent");
              };
         
         // автоматически закрыть все меню закладок при уходе курсора ....     
         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 );

Отредактировано bunda1 (28-07-2013 01:30:15)

Отсутствует

 

№664528-07-2013 11:53:13

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 261
UA: Firefox 9.0

Re: Custom Buttons

toxa пишет

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

bunda1
Может ещё какие-то идеи по этому вопросу?
Мне кажется не работает этот кусок кода:

Выделить код

Код:

//Bookmarklet 
eval("openLinkIn = " + openLinkIn.toString()
  .replace(/(?=if \(where == "save"\))/, 'if (url.substr(0, 11) == "javascript:") where = "current";')
  .replace(/(?=var loadInBackground)/, 'if (w.gBrowser.currentURI.spec == "about:blank" && !w.gBrowser.mCurrentTab.hasAttribute("busy")) where = "current";')
);

Потому что в целом кнопка работает, всё открывается в новой вкладке. Только вот букмарклеты...
Почему именно в 9 версии это происходит, может в about:config надо что-то подкрутить?

Отредактировано toxa (28-07-2013 12:11:51)

Отсутствует

 

№664628-07-2013 12:11:01

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

Re: Custom Buttons

bunda1 пишет

ЛКМ с задержкой на закладке или разделителе + двойным правым можно удалять разделители:

О, спасибо большое.:beer: Ещё удобнее стало. А как сделать чтобы при открытие закладки по СКМ  меню тоже бы  не закрывалось?

Отсутствует

 

№664728-07-2013 13:40:23

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

Re: Custom Buttons

toxa пишет

Может ещё какие-то идеи по этому вопросу?
Мне кажется не работает этот кусок кода:

Выделить код

Код:

//Bookmarklet 
eval("openLinkIn = " + openLinkIn.toString()
  .replace(/(?=if \(where == "save"\))/, 'if (url.substr(0, 11) == "javascript:") where = "current";')
  .replace(/(?=var loadInBackground)/, 'if (w.gBrowser.currentURI.spec == "about:blank" && !w.gBrowser.mCurrentTab.hasAttribute("busy")) where = "current";')
);

Потому что в целом кнопка работает, всё открывается в новой вкладке. Только вот букмарклеты...
Почему именно в 9 версии это происходит, может в about:config надо что-то подкрутить?

Не думаю что это кусок виноват, мне кажется он отвечает за ссылки на странице. Код не мой и я плохо знаю как работает eval
Если я правильно понял ты открываешь букмарклеты из меню адресной строки, может поэкспериментируй с:

Выделить код

Код:

eval("whereToOpenLink = " + whereToOpenLink.toString()
  .replace(/return "current";/g, "{"+(function() {
    var node = e && e.originalTarget;
    while (node) {
      switch (node.id) {
        case "bookmarksMenuPopup":
        case "goPopup":
        case "appmenu_bookmarksPopup":
        case "appmenu_historyMenupopup":
        case "personal-bookmarks":
        case "bookmarks-menu-button":
        case "historymenu_history":
        //case "home-button":
        case "page-proxy-stack":
        case "go-button":
        case "urlbar-go-button":
        case "PopupAutoCompleteRichResult":
        case "searchbar":
        case "PopupAutoComplete":
          return "tab";
      }
      node = node.parentNode;
    }
    return "current";
  }).toString().replace(/^.*{|}$/g, "")+"}")
);

попробуй закоментировать case "goPopup": или case "PopupAutoCompleteRichResult": или case "PopupAutoComplete":

Добавлено 28-07-2013 13:43:05
P.S. можно сделать кнопки которые запускают букмарклеты или даже кнопку которая открывает меню с букмарклеками.

Отредактировано bunda1 (28-07-2013 14:00:40)

Отсутствует

 

№664828-07-2013 14:50:56

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

Re: Custom Buttons

voqabuhe пишет
bunda1 пишет

ЛКМ с задержкой на закладке или разделителе + двойным правым можно удалять разделители:

О, спасибо большое.:beer: Ещё удобнее стало. А как сделать чтобы при открытие закладки по СКМ  меню тоже бы  не закрывалось?

:beer: а я про средний клик и забыл, теперь код стал еще лучше:

Выделить код

Код:

/* Открывать левым кликом закладку в новой вкладке или средним кликом в текущей вкладке, 
добавлять страницу в закладки в текущей папке удержанием левой кнопки на закладке или разделителе,
двойным правым кликом удалять закладки или разделители не закрывая меню закладок  */
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(_this) {  // таймер запускает добавление закладки 
                       _this.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 );

Добавлено 28-07-2013 14:54:19
Теперь осталось обеденить этот код с Двойным левым кликом на папке закладок добавлять закладку в папку закладок и еще кое что добавить, например удаление папок по двойному ПКМ и т.п.

Отредактировано bunda1 (28-07-2013 15:09:08)

Отсутствует

 

№664928-07-2013 16:11:02

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

Re: Custom Buttons

bunda1 пишет

:beer: а я про средний клик и забыл, теперь код стал еще лучше:

Спасибо, просто замечательно. Похоже кнопочка становится  такой же незаменимой, как и  Toggle  Find+3 good2.gif

bunda1 пишет

Теперь осталось обеденить этот код с Двойным левым кликом на папке закладок добавлять закладку в папку закладок и еще кое что добавить, например удаление папок по двойному ПКМ и т.п.

Вот бы ещё её действие распространить на боковую панель закладок и тогда вообще цены бы ей не было.  Это возможно сделать, или сильно сложно?

Отсутствует

 

№665028-07-2013 16:28:59

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

Re: Custom Buttons

voqabuhe пишет

Вот бы ещё её действие распространить на боковую панель закладок и тогда вообще цены бы ей не было.  Это возможно сделать, или сильно сложно?

Вроде не сложно, попробую.

Отсутствует

 

Board footer

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