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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№682602-09-2013 20:02:19

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

Re: Custom Buttons

villa7 пишет:

Если в код добавить "span" выделить текст становится проблематично. И ещё, можно как-то запретить открытие пустых вкладок.

Выделить код

Код:

function handleLongPress(e) {
    const lab = XULBrowserWindow.statusTextField.label;
    if ( e.button || !lab ) return;
    const func = arguments.callee;
    e.type == "mousedown"
    ? func.timer = setTimeout(function(){ gBrowser.selectedTab = gBrowser.addTab(lab) }, 500)
    : clearTimeout(func.timer);
}
["mouseup", "mousedown", "dragstart"]
.forEach(function(type){ addEventListener(type, handleLongPress, false, gBrowser) });

Отсутствует

 

№682702-09-2013 21:19:43

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

Re: Custom Buttons

bunda1
Добавил последний код, выделение теперь нормально, перестало срабатывать, но зато клик по ссылкам стал открывать по несколько вкладок. Ладно, выделение не критично, мне бы хотя бы чтобы здесь коротким кликом не открывало в новой вкладке, как это происходит по дефолту, без кнопки.
http://rusfolder.net/files/37807262
http://s001.radikal.ru/i195/1309/fc/86899977dbbet.jpg


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

Отсутствует

 

№682802-09-2013 22:26:51

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

Re: Custom Buttons

villa7

Выделить код

Код:

function handleLongPress(e) {
   const lab = XULBrowserWindow.statusTextField.label;
   if ( e.button ) return;
   
   const func = arguments.callee;
   e.type == "mousedown" && lab
   ? func.timer = setTimeout(function(){ gBrowser.selectedTab = gBrowser.addTab(lab) }, 500 ) // 500 время удержания в мс
   : clearTimeout( func.timer );
}
["mouseup", "mousedown", "dragstart"]
.forEach(function(type){ addEventListener(type, handleLongPress, false, gBrowser) });;

Отредактировано bunda1 (02-09-2013 22:30:59)

Отсутствует

 

№682902-09-2013 23:33:58

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

Re: Custom Buttons

bunda1
Может я что то не так делаю, добавил код, стало так:

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

Выделить код

Код:

//Долгий клик ЛКМ.........................................
function handleLongPress(e) {   // LOG( e.originalTarget.localName );
   if ( e.button > 0 ) return;

   if ( e.type == 'mousedown' && ["a", "b", "img"].indexOf( e.originalTarget.localName ) !== -1 ) {      
        
        arguments.callee.timerLongPress = setTimeout(function() {        
           
           var sel = document.commandDispatcher.focusedWindow.getSelection().toString();
           if ( sel == '' ) {    
                var theBox = document.commandDispatcher.focusedElement;
                if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { 
                     var startPos = theBox.selectionStart;
                     var endPos = theBox.selectionEnd;
                     var sel = theBox.value.substring(startPos, endPos);  
                     }          
                }
           if ( sel !== '' ) return;       
        
           gBrowser.selectedTab = gBrowser.addTab( XULBrowserWindow.statusTextField.label );     
        
        }, 500 ); 
                   
        }
       
   if ( e.type == 'mouseup' || e.type == 'dragstart' ) { window.clearTimeout( arguments.callee.timerLongPress ) };                  
};
addEventListener('mouseup', handleLongPress, false, gBrowser );
addEventListener('mousedown', handleLongPress, false, gBrowser );
addEventListener('dragstart', handleLongPress, false, gBrowser );


function handleLongPress(e) {
   const lab = XULBrowserWindow.statusTextField.label;
   if ( e.button ) return;
   
   const func = arguments.callee;
   e.type == "mousedown" && lab
   ? func.timer = setTimeout(function(){ gBrowser.selectedTab = gBrowser.addTab(lab) }, 500 ) // 500 время удержания в мс
   : clearTimeout( func.timer );
}
["mouseup", "mousedown", "dragstart"]
.forEach(function(type){ addEventListener(type, handleLongPress, false, gBrowser) });;


при обычном клике открывает две лишние вкладки.
http://rusfolder.net/files/37807262


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

Отсутствует

 

№683002-09-2013 23:43:32

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

Re: Custom Buttons

villa7 пишет:

Может я что то не так делаю, добавил код, стало так:

Конечно не так, удали старые коды и используй Сегодня 21:26:51

Отсутствует

 

№683103-09-2013 00:18:40

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

Re: Custom Buttons

bunda1
Вот я валенок а, людям голову морочу, заменил код, стало всё работать как положено, и ссылки и выделение, ты уж прости, сразу не догнал что заменить полностью нужно было, думал что нужно добавить. В очередной раз спасибо большое. Кстати, думаю многим бы пригодилась  подобная функция, жаль если здесь затеряется, ведь удобнее ЛКМ подержать, чем с СКМ мучиться(имхо).
P.S. А на подобных страницах уже видать скрипты мешают, потому как открывает лишнюю вкладку, а если отключить скрипты то нормально, просто часто качаю с rusfolder.net, не хочется каждый раз лишние вкладки закрывать.
http://rusfolder.net/files/37807262

Отредактировано villa7 (03-09-2013 14:33:26)


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

Отсутствует

 

№683204-09-2013 19:39:52

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

Re: Custom Buttons

villa7 пишет:

P.S. А на подобных страницах уже видать скрипты мешают, потому как открывает лишнюю вкладку, а если отключить скрипты то нормально, просто часто качаю с rusfolder.net, не хочется каждый раз лишние вкладки закрывать.
http://rusfolder.net/files/37807262

Выделить код

Код:

// Открывать ссылки в новой активной вкладке длинным кликом, от 04.09.2013. ................................
function handleLongPress(e) {
    
    const lab = XULBrowserWindow.statusTextField.label;
    if ( e.button || !lab ) return;
    
    const func = arguments.callee;    
    e.type == "mousedown"
    ? func.timer = setTimeout(function() { gBrowser.selectedTab = gBrowser.addTab(lab) }, 500 ) // 500 время удержания в мс
    : clearTimeout( func.timer );
}
["mouseup", "mousedown", "dragstart"]
.forEach(function(type) { addEventListener(type, handleLongPress, true, gBrowser) });

Отсутствует

 

№683304-09-2013 23:44:01

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

Re: Custom Buttons

bunda1
Обалденно, перепробовал всё что где не так было, везде всё нормально. Готовая кнопка получилась. Уже даже стыдно в очередной раз спасибо говорить, но скажу, спасибо.


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

Отсутствует

 

№683405-09-2013 00:41:18

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 26.0

Re: Custom Buttons

bunda1, можешь сделать ,чтоб «Открывать ссылки в новой активной вкладке длинным кликом, от 04.09.2013» и в закладках работала?

Отредактировано lokiju (05-09-2013 00:42:19)

Отсутствует

 

№683505-09-2013 21:16:06

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

Re: Custom Buttons

Andrey_Krropotkin пишет:

Нужно чтобы этот пункт появился еще на страницах: chrome://browser/content/bookmarks/bookmarksPanel.xul

Выделить код

Код:

addEventListener("popupshowing", function(e) {
   var popup = e.originalTarget;

   if ( content.location == "chrome://browser/content/bookmarks/bookmarksPanel.xul" && popup.id == "placesContext") {
        var copyLabel = popup.getElementsByAttribute("label", "Копировать название")[0]
        if ( !!copyLabel ) return;
        var menuitem = document.createElement("menuitem");
        menuitem.setAttribute("label", "Копировать название");
        menuitem.setAttribute("onclick", "alert('')");
        addDestructor(function() { popup.removeChild( menuitem ) }); 
        popup.appendChild( menuitem );
        }       
}, false, gBrowser );

Отредактировано bunda1 (05-09-2013 21:17:37)

Отсутствует

 

№683606-09-2013 02:41:13

george58
Участник
 
Группа: Members
Зарегистрирован: 05-09-2013
Сообщений: 5
UA: Firefox 23.0

Re: Custom Buttons

bunda1 пишет:

Код:

// Открывать ссылки в новой активной вкладке длинным кликом, от 04.09.2013. ....

Я тут человек новый, а быстро перелопатить 306 страниц темы сложно.
Есть ли готовая кнопка " Открывать ссылки в фоновой вкладке длинным кликом"?
Если нет, то можно ли ее сделать?
Привык в Opera к open-in-background-with-long-press.js.
P.S. Про Easy DragToGo+ знаю.

Отредактировано george58 (06-09-2013 02:57:50)

Отсутствует

 

№683706-09-2013 02:55:59

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

Re: Custom Buttons

george58 пишет:

Открывать ссылки в фоновой вкладке

Easy DragToGo+
http://s3.hostingkartinok.com/uploads/thumbs/2013/09/1365d89ab11a0520dd9511573b1bb20e.png

Отсутствует

 

№683806-09-2013 09:40:51

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

Re: Custom Buttons

george58
как я понимаю, нужно просто в 9-й строке кода удалить:  gBrowser.selectedTab =

Отсутствует

 

№683906-09-2013 16:04:29

george58
Участник
 
Группа: Members
Зарегистрирован: 05-09-2013
Сообщений: 5
UA: Firefox 23.0

Re: Custom Buttons

Inko7 пишет:

нужно просто в 9-й строке кода удалить:  gBrowser.selectedTab =

Что-то еще нужно удалить (добавить).
Кроме фоновой ссылка открывается и в текущей вкладке.

Отсутствует

 

№684006-09-2013 16:26:32

2k1dmg
Участник
 
Группа: Members
Зарегистрирован: 06-04-2011
Сообщений: 190
UA: Firefox 23.0

Re: Custom Buttons

george58

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

Выделить код

Код:

// uccbjs_handleLongPressLinkOpen-0.0.4.20130906-fx

let uccbjs_handleLongPressLinkOpen = {
    options: {
        inBackground: true,
        afterCurrent: true,
        timeout: 500
    },
    init: function() {
        this.toggleEventListener("add");
    },
    uninit: function() {
        this.toggleEventListener("remove");
    },
    destructor: function(reason) {
        this.uninit();
    },
    toggleEventListener: function(tReason) {
        let tListener = (tReason == "add") ? "addEventListener" : "removeEventListener";
        let eType = ["mouseup", "mousedown", "dragstart"];
        for (let i in eType) {
            gBrowser[tListener](eType[i], this, false);
        }
        window[tListener]("unload", this, false);
    },
    handleEvent: function(e) {    
        if (e.type == "unload")
            this.uninit();
        else 
            this.clickHandler(e);
    },
    clickHandler: function(e) {
        if (e.button)
            return;
        let link = XULBrowserWindow.statusTextField.label;
        if (e.type == "mousedown" && link)  {
            let _this = this;
            this.timeoutID = window.setTimeout(function() {
                _this.openLinkWithDelay(e, link);
                //_this.openLinkWithDelay.call(_this, e, link);
            }, this.options.timeout);
        } else 
            this.cancelHandler();
    },
    openLinkWithDelay: function(e, link) {
        let where;
        let eKeys = !e.ctrlKey && !e.metaKey && !e.altKey;
        let eShiftKeyinBackground = this.options.inBackground ? !e.shiftKey : e.shiftKey;
        if (eShiftKeyinBackground && eKeys) {
            let trg = e.target || e.originalTarget;
            trg.addEventListener("click", function preventClick(e) {
                trg.removeEventListener(e.type, preventClick, true);
                e.preventDefault();
                e.stopPropagation();
            }, true);
            where = "tabshifted";
        } else if (!eShiftKeyinBackground && eKeys)
            where = "tab";
        if (where) {
            openUILinkIn(link, where, {
                relatedToCurrent : this.options.afterCurrent
            });
        }
        delete this.timeoutID;
    },
    cancelHandler: function() {
        if (typeof this.timeoutID == "number") {
            window.clearTimeout(this.timeoutID);
            delete this.timeoutID;
        }
    }
};
uccbjs_handleLongPressLinkOpen.init();
if (typeof addDestructor == "function" &&  // userChromeJS/uc
    addDestructor != ("addDestructor" in window && window.addDestructor)) {
    let _this = uccbjs_handleLongPressLinkOpen;
    addDestructor(_this.destructor, _this);
}

На форуме

 

№684106-09-2013 17:02:35

george58
Участник
 
Группа: Members
Зарегистрирован: 05-09-2013
Сообщений: 5
UA: Firefox 23.0

Re: Custom Buttons

2k1dmg
Вообще никакой реакции.

Отсутствует

 

№684206-09-2013 22:06:05

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

Re: Custom Buttons

george58 пишет:

Есть ли готовая кнопка " Открывать ссылки в фоновой вкладке длинным кликом"?
Если нет, то можно ли ее сделать?

Выделить код

Код:

// Открывать ссылки в новой вкладке длинным кликом, от 06.09.2013. ................................
function handleLongPress(e) { 
    
   var lab = XULBrowserWindow.statusTextField.label;
   if ( e.button || !lab ) return;
     
   const background = true;  // true => открывать в фоновой вкладке
   const func = arguments.callee;
   
   if ( e.type == "mousedown") { 
        func.timer = setTimeout(function() {
           gBrowser.addEventListener("click", function(e) {
              e.preventDefault();    
              this.removeEventListener( e.type, arguments.callee, true ); 
           }, true );
        
           gBrowser.loadOneTab( lab, null, null, null, background, false ); 
        }, 500 ); // 500 время удержания в мс   
        }
   else 
        clearTimeout( func.timer );
}
["mouseup", "mousedown", "dragstart"]
.forEach(function(type) { addEventListener(type, handleLongPress, true, gBrowser) });

Отредактировано bunda1 (06-09-2013 22:21:45)

Отсутствует

 

№684306-09-2013 22:22:13

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

Re: Custom Buttons

bunda1

bunda1 пишет:

// Открывать ссылки в новой фоновой вкладке длинным кликом, от 06.09.2013

В [nightly] не пашет:( , а версия открывающая в активной вкладке работает.

Отсутствует

 

№684406-09-2013 23:00:25

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

Re: Custom Buttons

voqabuhe пишет:

В [nightly] не пашет:( , а версия открывающая в активной вкладке работает.

Я проверил работает, может конфликт с каким-то расширением или ты открывал ссылки в результатах поиска.

Отсутствует

 

№684506-09-2013 23:06:44

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

Re: Custom Buttons

bunda1 пишет:

Я проверил работает, может конфликт с каким-то расширением или ты открывал ссылки в результатах поиска.

Прошу прощения, действительно работает, видно первый раз что-то не правильно скопировалось.:dumb: Спасибо.

Отсутствует

 

№684607-09-2013 00:38:57

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

Re: Custom Buttons

bunda1
А не знаешь почему этот код

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

Выделить код

Код:

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 );


переключает новую вкладку на уже открытую домашюю страницу только когда вкладки вверху, а если вкладки снизу он почему-то не переключает а заново открывает домашнюю. Можно что нибудь сделать.


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

Отсутствует

 

№684707-09-2013 00:55:17

george58
Участник
 
Группа: Members
Зарегистрирован: 05-09-2013
Сообщений: 5
UA: Firefox 23.0

Re: Custom Buttons

2k1dmg

george58 пишет:

Вообще никакой реакции.

Прошу прощения работает!:blush:,
я код вводил в поле "Код".
В качестве пожелания:
указывать для чайников в какое из доступных мест необходимо воткнуть.

Отсутствует

 

№684807-09-2013 10:39:34

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

Re: Custom Buttons

george58 пишет:

в какое из доступных мест необходимо воткнуть.

А ты втыкай во все доступные места:D

Отсутствует

 

№684907-09-2013 12:25:04

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

Re: Custom Buttons

villa7 пишет:

bunda1
А не знаешь почему этот код
переключает новую вкладку на уже открытую домашюю страницу только когда вкладки вверху, а если вкладки снизу он почему-то не переключает а заново открывает домашнюю. Можно что нибудь сделать.

Я не понял вопроса но попробуй так:

Выделить код

Код:

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

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

Отсутствует

 

№685007-09-2013 13:31:48

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

Re: Custom Buttons

bunda1
Ой извини, не тот код дал по запарке.  Ты переделывал мне код который двойным кликом по  панели не открывал заново домашнюю страницу(долго грузится), а сразу переключал на уже открытую (она у меня постоянно открыта в уголочке тоненькой полоской). Когда табы вверху код работает нормально, а вот когда табы внизу (browser.tabs.onTop;false) то при даблклике не переключает на домашнюю, а открывает ещё одну домашнюю.

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

Выделить код

Код:

addEventListener("dblclick", function(e) {
if ( e.button == 0 && document.getElementById('main-window').hasAttribute('tabsintitlebar') ) {
     e.preventDefault();
     
     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');
     }
}, false, document.getElementById('TabsToolbar') ); 


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

Отсутствует

 

Board footer

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