Поиск изображения в google из контекстного меню изображений (Firefox)
Автор: bunda1
Версия: от 02.06.2019.
Описание: Добавляет в контекстное меню изображений на странице новый пункт "Поиск изображения в google" который дает возможность запустить в новой активной вкладке поиск изображения в google.
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.
// Поиск изображения в google из контекстного меню, от 02.06.2019. .................. (()=> { var copyimage = document.getElementById("context-copyimage-contents"); var contextMenu = copyimage.parentNode; var menuitem = contextMenu.insertBefore(document.createElement("menuitem"), copyimage); menuitem.setAttribute("label", "Поиск изображения в google"); menuitem.setAttribute("class", "menuitem-iconic"); menuitem.setAttribute("image", "https://www.google.lv/favicon.ico"); menuitem.onclick =e=> { gBrowser.selectedTab = gBrowser.addTab("https://www.google.com/searchbyimage?image_url=" + encodeURIComponent(gContextMenu.imageURL), { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()}) }; addEventListener("popupshowing", ()=> menuitem.hidden = copyimage.hidden, true, contextMenu); addDestructor(()=> menuitem.remove()); })();
Добавить подменю "Поиск изображения в ..." в контекстном меню изображений (Firefox)
Автор: bunda1
Версия: от 02.06.2019.
Описание: Добавляет в контекстное меню изображений на странице подменю ""Поиск изображения в ..."" который даёт возможность искать изображение в разных поисковиках в новой активной вкладке.
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.
// Добавить подменю "Поиск изображения в" в контекстном меню изображений, от 02.06.2019. ............. (()=> { var copyimage = document.getElementById("context-copyimage-contents"); var contextMenu = copyimage.parentNode; var array = [ ['Google', 'https://www.google.lv/favicon.ico', 'https://www.google.com/searchbyimage?&image_url='], ['Яндекс', 'http://yastatic.net/morda-logo/i/favicon_islands.ico', 'http://yandex.ru/images/search?rpt=imageview&img_url='], ['Bing', 'https://www.bing.com/s/a/bing_p.ico', 'http://www.bing.com/images/searchbyimage?FORM=IRSBIQ&cbir=sbi&imgurl='], ['Tineye', 'http://tineye.com/favicon.ico', 'http://tineye.com/search?pluginver=bookmark_1.0&url='], ]; var menu = contextMenu.insertBefore(document.createElement("menu"), copyimage); menu.setAttribute("label", "Поиск изображения в ..."); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", array[0][1]); menu.onclick =e=> { e.target.nodeName == 'menu' && search(array[0][2]); setTimeout(()=> contextMenu.hidePopup(), 20) }; addEventListener("popupshowing", ()=> menu.hidden = copyimage.hidden, true, contextMenu); addDestructor(()=> menuitem.remove()); var menuPopup = menu.appendChild(document.createElement("menupopup")); array.forEach(m=> { var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", m[0]); mItem.setAttribute("image", m[1]); mItem.setAttribute("class", "menuitem-iconic"); mItem.onclick =()=> search(m[2]); }); var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", 'Искать во всех поисковиках'); mItem.onclick =()=> { array.forEach(m=> { search(m[2]) }) }; function search(finder) { gBrowser.selectedTab = gBrowser.addTab(finder + encodeURIComponent(gContextMenu.imageURL), { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()}); }; })();
Отредактировано bunda1 (09-09-2015 19:15:57)
Отсутствует
bunda1, спасибо огромное за кнопку! Давно о такой мечтала, чтобы аналогичное расширение заменить.
А вы можете ещё сделать иконку Гугла для этого пункта в меню?
Отредактировано Alfina (31-01-2013 20:56:44)
Отсутствует
Добавить новый пункт "Поиск изображения в google" в контекстном меню изображений с иконкой
Можно загружать иконку с интернета:
// Добавить новый пункт "Поиск изображения в google" в контекстном меню изображений(с иконкой) ........................... (function() { if ( document.getElementById("image-search") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "image-search"; menuItem.setAttribute("label", "Поиск изображения в google"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "http://www.canalcorredores.com/modulos/mod_periodico/pub/iconos/google.gif"); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('http://www.google.com/searchbyimage?image_url=' + encodeURIComponent( gContextMenu.mediaURL || gContextMenu.imageURL || gContextMenu.bgImageURL ) )"); document.getElementById("context-viewimage").parentNode.insertBefore( menuItem, document.getElementById("context-viewimage") ); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu.onImage; }, false); })();
или иконка как base64::
// Добавить новый пункт "Поиск изображения в google" в контекстном меню изображений(с иконкой) ........................... (function() { if ( document.getElementById("image-search") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "image-search"; menuItem.setAttribute("label", "Поиск изображения в google"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKBMpTCYX4GMrH/9gMxn/YDQV/2cyG/9nLxr/YjMd/10xHv9cMRz/XjIa/2ExHP9gNRn/YDIV/2IwHf9ULSL/RCcU4EEoEylLKBfgcjUe/349IP98QRr/gEEd/39AKP+FUjv/h2NL/4lkUP+GYEv/hVQ+/35CJv9+Phz/gEIb/4c8H/96PCT/azgb/0koFOBpMyT/jD8i/4RFIf97RB3/hEUr/7GCdf/q29L/+e3e/97HuP/dwLD/6M2+/76VhP9+RSr/hUMg/5NAH/+NQCX/h0Ai/2Q1Iv9yOyf/lkYn/4xFJP+HSSn/m25Y//7y6v/bw7f/fkw2/3hBJv90QSX/hFI9/+nUxv+2k4H/i0kq/5VIJP+QRiL/lkYn/3Q5Kv9zQSn/mUkp/5tJKf+XSin/roJr//757f+0gG//l0oq/5NMI/+WTCH/i00u/8q0o//jx7j/mFU6/5JMJP+TTiL/l0wl/3Y/K/93Rif/oE4p/6ZNK/+jTSz/pGpS//rn2v/Np5b/kFEx/5BSK/+XTyv/nmFJ/+rTyP/lyrv/nlk+/5NRJv+WUib/l1Ik/3lFK/+BSyr/plQt/6ZULP+mUyv/nFIz/6d3Yf/hxrX/3b6n/7SUf/+7l4b/8NjL//7z6//BkoH/mlMz/55TLP+iUyv/olMp/4FJK/+FSzP/qVUz/61ZMf+sWSv/rFYs/59TM/+cWT//nmJJ/8OSgf/+8ub/+O/b/8ikkv+iVTb/qVgv/6pVMP+1WDT/qVY1/4ZMMf+MUTX/q1sx/7RZMf+2WjH/t1wv/7JbLf+oXDT/nVtD/8yajv/+8uf/ybGZ/5VYOP+zWDL/t1sx/7NYMv+5WjX/sFk2/49SM/+VVDn/s143/7hfNP+8WzX/v141/6xeMv/ZoYD/+9/I/+DBtP/Ss6P/7L+l/7l1Tf+1XjT/vlw0/7tdM/+6YC//tV42/5FYNP+cU0D/uGE9/75fNf/GZTb/wGI4/8OBYv//5tT/5byr/6RjSP+lXD//26eM//TNsf+3YkH/xGI3/8NjNf+7Yi//uGE3/5pZOv+hWEH/wGY9/8RlNP/KaDf/xWY3/9+ef///5tv/v4Vt/8NmOv+9ZUD/xI16//7o2v/FgGX/x2g5/8poNv/KaDb/xWU5/6ZYQv+mYUH/y2s7/8xwN//TbTf/0m46/+CYd///59X/vIJk/81tOv/Bbz//4a6b//7n2P/FiGL/yWw4/9FtN//KcDf/zG45/6dfQP+tZT//1W4//9pxPf/VbTz/1G5B/75wTf/31L7/z56C/8V5TP/TkGP/+NXC//XSv/+4cEr/0nA7/9VwO//Ubz7/1G88/61kP/+0bkj/4XNC/99wPv/gckL/321B/9VwR//Gf2D/6reX/+/DoP/82br//uHO//LSvv/mp33/3nhJ/9dwQv/bb0X/23BG/7RrSP+wb0r/4nhK/+V3Rf/qeEX/8HZE/+lzQf/adUf/yWg+/7lfO/+tYDz/qWFA/6xeOf/IaTn/5nND/+h1SP/pdkj/3ndN/7RtUP+NWTrg2oJX/+uGVf/ofkv/84FN/++ETv/qfk//6n5Q/+h+Uv/ngFP/5oFS/+d/UP/nfk//839O/+5+Tv/uhVj/3YFa/5JYPOCRVkEppFo64NN8UP/dgVT/3oRR/92DTP/ihVj/34FX/+ODVf/mg1T/5IRO/96ET//cglH/4YJT/+CCVv/Te1D/oVk44JBVQCkAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEE="); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('http://www.google.com/searchbyimage?image_url=' + encodeURIComponent( gContextMenu.mediaURL || gContextMenu.imageURL || gContextMenu.bgImageURL ) )"); document.getElementById("context-viewimage").parentNode.insertBefore( menuItem, document.getElementById("context-viewimage") ); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu.onImage; }, false); })();
После замены кода нужен рестарт.
Отредактировано bunda1 (01-04-2013 13:34:44)
Отсутствует
Добавлено 01-04-2013 21:50:37
Отредактировано feas (01-04-2013 21:50:37)
Добро пожаловать на форум mozilla-russia.org. Здесь вы можете посоветоваться или обратиться за помощью к фанатам и пользователям продуктов Мозиллы. Если не знаете как правильно оформить пост специально для вас расписан пункт 2.2 правил форума
Сброс на примере Firefox – лёгкое решение большинства проблем
Починка браузера. Перенос своих настроек на новый профиль.
Отсутствует
Попробовал код вставить в Stylish - не работает. Жаль. )
Не следует делать того, что смущает совесть.
Отсутствует
Попробовал код вставить в Stylish - не работает. Жаль. )
Тут кнопки а не стили вставлять(создать) надо в кнопку
Добро пожаловать на форум mozilla-russia.org. Здесь вы можете посоветоваться или обратиться за помощью к фанатам и пользователям продуктов Мозиллы. Если не знаете как правильно оформить пост специально для вас расписан пункт 2.2 правил форума
Сброс на примере Firefox – лёгкое решение большинства проблем
Починка браузера. Перенос своих настроек на новый профиль.
Отсутствует
Да понял я. Так уж, решил попробовать. ))
Не следует делать того, что смущает совесть.
Отсутствует
Не работает в 28.0 Перекидывает на главную гугла и всё.
пробуй этот скрипт http://userscripts.org/scripts/source/139231.user.js
Добро пожаловать на форум mozilla-russia.org. Здесь вы можете посоветоваться или обратиться за помощью к фанатам и пользователям продуктов Мозиллы. Если не знаете как правильно оформить пост специально для вас расписан пункт 2.2 правил форума
Сброс на примере Firefox – лёгкое решение большинства проблем
Починка браузера. Перенос своих настроек на новый профиль.
Отсутствует
И можно её перенести вниз?
// Добавить новый пункт "Поиск изображения в google" в контекстном меню изображений ......................... (function() { var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Поиск изображения в google"); menuitem.setAttribute("oncommand", "gBrowser.selectedTab = gBrowser.addTab('http://www.google.com/searchbyimage?image_url=' + encodeURIComponent( gContextMenu.mediaURL || gContextMenu.imageURL || gContextMenu.bgImageURL ) )"); var contextMenu = document.getElementById("contentAreaContextMenu"); var sep= document.getElementById("context-sep-copyimage"); contextMenu.insertBefore( menuitem, sep ); addEventListener("popupshowing", function() { menuitem.hidden = !gContextMenu.onImage }, false, contextMenu ); addDestructor(function() { contextMenu.removeChild( menuitem ) }); })();
Насчёт других вопросов я не понял
Добавлено 04-04-2014 19:02:15
Не работает в 28.0 Перекидывает на главную гугла и всё.
У меня работает даже на наверно конфликт с другим расширением.
Отредактировано bunda1 (04-04-2014 19:04:38)
Отсутствует
bunda1, а возможно расширить кнопку до аналога расширения https://addons.mozilla.org/en-US/firefo … s/?src=api? Т.е. добавить Тинай и Яндекс
Отсутствует
bunda1, а возможно расширить кнопку до аналога расширения https://addons.mozilla.org/en-US/firefo … s/?src=api? Т.е. добавить Тинай и Яндекс
// Добавить подменю "Поиск изображения в ..." в контекстном меню изображений, от 01.10.2014 ............. (function() { var contextMenu = document.getElementById("contentAreaContextMenu"); var menu = document.createElement("menu"); menu.setAttribute("label", "Поиск изображения в ..."); contextMenu.insertBefore( menu, document.getElementById("context-viewimage") ); addEventListener("popupshowing", function() menu.hidden = !gContextMenu.onImage, false, contextMenu ); addDestructor(function() contextMenu.removeChild(menu) ); var array = [ [ 'Google', 'https://www.google.lv/favicon.ico', 'http://www.google.com/searchbyimage?image_url=' ], [ 'Tineye', 'http://tineye.com/favicon.ico', 'http://tineye.com/search?pluginver=bookmark_1.0&url=' ], [ 'Яндекс', 'http://yastatic.net/morda-logo/i/favicon_islands.ico', 'http://yandex.ru/images/search?rpt=imageview&img_url=' ] ]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(function( m ) { var mItem = menuPopup.appendChild( document.createElement("menuitem") ); mItem.setAttribute("label", m[0]); mItem.setAttribute("image", m[1]); mItem.setAttribute("class", "menuitem-iconic"); mItem.finder = m[2]; }); addEventListener("command", function(e) { gBrowser.selectedTab = gBrowser.addTab( e.target.finder + encodeURIComponent(gContextMenu.imageURL) ); }, false, menu ); })();
Отредактировано bunda1 (01-10-2014 23:08:02)
Отсутствует
bunda1
А можно добавить в кнопку обработку кликов? Например ЛКМ открывает поиск в текущей странице, а СКМ в новой вкладке, в общем стандартное поведение.
Отсутствует
bunda1
А можно добавить в кнопку обработку кликов? Например ЛКМ открывает поиск в текущей странице, а СКМ в новой вкладке, в общем стандартное поведение.
// Добавить новый пункт "Поиск изображения в google" в контекстном меню изображений ................................ ((contextMenu) => { var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Поиск изображения в google"); menuitem.onclick =e=> { var url = 'http://www.google.com/searchbyimage?image_url=' + encodeURIComponent(gContextMenu.mediaURL || gContextMenu.imageURL || gContextMenu.bgImageURL); e.button ? gBrowser.selectedTab = gBrowser.addTab(url) : loadURI(url); } contextMenu.insertBefore(menuitem, document.getElementById("context-viewimage")); addEventListener("popupshowing", ()=> menuitem.hidden = !gContextMenu.onImage, false, contextMenu); addDestructor(()=> contextMenu.removeChild(menuitem) ); })(document.getElementById("contentAreaContextMenu") );
Отсутствует
bunda1
Спасибо, только проблема одна, когда нажимаю СКМ, то меню не закрывается, а вкладка открывается вне группы вкладок (использую TU), если например вкладка по середине группы, то поиск откроется за последней вкладкой группы. Хотелось бы чтобы вкладка открывалась как обычные ссылки открываются и срабатывал механизм создания группы вкладок.
Отсутствует
bunda1
Спасибо, только проблема одна, когда нажимаю СКМ, то меню не закрывается
// Добавить новый пункт "Поиск изображения в google" в контекстном меню изображений ................................ ((contextMenu) => { var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Поиск изображения в google"); menuitem.onclick =e=> { var url = 'http://www.google.com/searchbyimage?image_url=' + encodeURIComponent(gContextMenu.mediaURL || gContextMenu.imageURL || gContextMenu.bgImageURL); e.button ? gBrowser.selectedTab = gBrowser.addTab(url) : loadURI(url); contextMenu.hidePopup(); } contextMenu.insertBefore(menuitem, document.getElementById("context-viewimage")); addEventListener("popupshowing", ()=> menuitem.hidden = !gContextMenu.onImage, false, contextMenu); addDestructor(()=> contextMenu.removeChild(menuitem) ); })(document.getElementById("contentAreaContextMenu") );
вкладка открывается вне группы вкладок (использую TU), если например вкладка по середине группы, то поиск откроется за последней вкладкой группы. Хотелось бы чтобы вкладка открывалась как обычные ссылки открываются и срабатывал механизм создания группы вкладок
.
А как старый код открывал вкладки и что за группы вкладок.
Отсутствует
А как старый код открывал вкладки и что за группы вкладок.
Старый код открывал также. Группа вкладок на скриншоте это 4 первые вкладки с красным фоном:
Создаются группы с помощью Tab Utilities при включенном параметре extensions.tabutils.autoStack;true и группируются вкладки автоматически при открытии ссылок со страницы.
Скорее всего надо расширение отредактировать чтобы оно обрабатывало gBrowser.addTab и создавало группу при этом событии, т.к. не только в этой кнопке вкладка открывается вне группы, так например в кнопке Translate при включённой опции "Перевод страницы в новой вкладке сразу справа", также открывается вкладка вне группы. Кстати как называется событие открытия ссылки?
Отредактировано Kamui (20-05-2015 19:00:18)
Отсутствует
Kamui
Скорее всего надо расширение отредактировать чтобы оно обрабатывало gBrowser.addTab и создавало группу при этом событии. Кстати как называется событие открытия ссылки?
Нет, надо вместо gBrowser.addTab использовать что другое, наверно:
gBrowser.loadOneTab( url, {relatedToCurrent: true, inBackground: true, referrerURI: makeURI(content.location.href)} )
Кстати как называется событие открытия ссылки?
Насчёт событие не знаю, но клик на ссылку запускает вот такую цепочку внутренних функций Firefox:
1. contentAreaClick(event, isPanelClick)
2. handleLinkClick(event, href, linkNode)
3. openLinkIn(url, where, params)
4. gBrowser.loadOneTab(aURI, aReferrerURI, aCharset, aPostData, aLoadInBackground, aAllowThirdPartyFixup)
5. gBrowser.addTab(aURI, aReferrerURI, aCharset, aPostData, aOwner, aAllowThirdPartyFixup)
Tab Utilities должно реагировать на одну из них, кроме gBrowser.addTab
Отсутствует
bunda1
Кстати в кнопке Translate вкладки группируются если выбран перевод с заменой текста в Microsoft/Google. Я так понял потому что изначальная вкладка дублируется, а уже после применяется код для перевода? Может быть также сделать и здесь?
Отсутствует
Kamui
Вот так вроде работает в "Поиск изображения в google":
e.button ? openLinkIn(url, "tabshifted", {relatedToCurrent: true, inBackground: true, referrerURI: makeURI(content.location.href)}) : loadURI(url);
Добавлено 21-05-2015 19:04:57
а в кнопке Translate:
cbu.getPrefs("Translate.nextPage") ? openLinkIn(url, "tabshifted", {relatedToCurrent: true, inBackground: true, referrerURI: makeURI(content.location.href)}) : loadURI(url);
Отредактировано bunda1 (21-05-2015 19:04:57)
Отсутствует