Если в код добавить "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) });
Отсутствует
bunda1
Добавил последний код, выделение теперь нормально, перестало срабатывать, но зато клик по ссылкам стал открывать по несколько вкладок. Ладно, выделение не критично, мне бы хотя бы чтобы здесь коротким кликом не открывало в новой вкладке, как это происходит по дефолту, без кнопки.
http://rusfolder.net/files/37807262
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
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)
Отсутствует
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) });;
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Может я что то не так делаю, добавил код, стало так:
Конечно не так, удали старые коды и используй Сегодня 21:26:51
Отсутствует
bunda1
Вот я валенок а, людям голову морочу, заменил код, стало всё работать как положено, и ссылки и выделение, ты уж прости, сразу не догнал что заменить полностью нужно было, думал что нужно добавить. В очередной раз спасибо большое. Кстати, думаю многим бы пригодилась подобная функция, жаль если здесь затеряется, ведь удобнее ЛКМ подержать, чем с СКМ мучиться(имхо).
P.S. А на подобных страницах уже видать скрипты мешают, потому как открывает лишнюю вкладку, а если отключить скрипты то нормально, просто часто качаю с rusfolder.net, не хочется каждый раз лишние вкладки закрывать.
http://rusfolder.net/files/37807262
Отредактировано villa7 (03-09-2013 14:33:26)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
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) });
Отсутствует
bunda1
Обалденно, перепробовал всё что где не так было, везде всё нормально. Готовая кнопка получилась. Уже даже стыдно в очередной раз спасибо говорить, но скажу, спасибо.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Нужно чтобы этот пункт появился еще на страницах: 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)
Отсутствует
Код:
// Открывать ссылки в новой активной вкладке длинным кликом, от 04.09.2013. ....
Я тут человек новый, а быстро перелопатить 306 страниц темы сложно.
Есть ли готовая кнопка " Открывать ссылки в фоновой вкладке длинным кликом"?
Если нет, то можно ли ее сделать?
Привык в Opera к open-in-background-with-long-press.js.
P.S. Про Easy DragToGo+ знаю.
Отредактировано george58 (06-09-2013 02:57:50)
Отсутствует
Открывать ссылки в фоновой вкладке
Отсутствует
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); }
Отсутствует
Есть ли готовая кнопка " Открывать ссылки в фоновой вкладке длинным кликом"?
Если нет, то можно ли ее сделать?
// Открывать ссылки в новой вкладке длинным кликом, от 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)
Отсутствует
В не пашет , а версия открывающая в активной вкладке работает.
Я проверил работает, может конфликт с каким-то расширением или ты открывал ссылки в результатах поиска.
Отсутствует
Я проверил работает, может конфликт с каким-то расширением или ты открывал ссылки в результатах поиска.
Прошу прощения, действительно работает, видно первый раз что-то не правильно скопировалось. Спасибо.
Отсутствует
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 );
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
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)
Отсутствует
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') );
Лучше спросить у знающих - чем лезть не зная.
Отсутствует