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