>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Скрипты http://forum.mozilla-russia.org/viewforum.php?id=37 >Bookmarklets (букмарклеты) - закладки с JavaScript кодом http://forum.mozilla-russia.org/viewtopic.php?id=70726 |
Dorian > 11-10-2016 20:19:30 |
Предлагаю админам прекрепить эту тему. Потому что это тоже разнавидность скриптов. Введение: Как создать bookmarklet? Стандартный шаблон bookmarklet: На место alert('test'); подставьте стандартный код JavaScript. После нажатия на закладку - он выполнится. Пример 1: скрытый текст Выделить код Код:javascript:void((function () { window.location.href = document.location.href.replace(/^https?\:\/\/(www\.)?developer\.mozilla\.org\/[a-z]+(\-[a-z]+)?\//i, 'https://developer.mozilla.org/en-US/'); })()); Значение регулярного выражения можно увидеть тут /^https?://(www.)?developer.mozilla.org/[a-z]+(-[a-z]+)?//i Пример 2: скрытый текст Выделить код Код:javascript: void((function() { window.open('https://www.similarweb.com/website/' + document.domain); })()); document.domain - ваш текущий адрес Пример 3: скрытый текст Выделить код Код:javascript:void((function () { function getSelectionText() { const activeEl = document.activeElement; const activeElTagName = activeEl.tagName.toLowerCase(); if (activeEl && (activeElTagName === 'textarea' || activeElTagName === 'input')) { return activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd); } return String(window.getSelection()); } const url = 'https://www.google.ru/search?q=%s'; window.location.href = url.replace(/\%s/, getSelectionText()); })()); Где взять: 1. http://marklets.com/ - сборник букмарклетов, код никто не проверяет, будьте осторожны! 2. Попросить на любом форуме в теме "скрипты" написать для вас, может кто-то поможет 3. Использовать google для поиска Что за странный вид кода получается при вставке Bookmarklet в закладку? Выделить код Код:javascript:void((function%20()%20{%20%20%20window.location.href%20=%20document.location.href.replace(/^https?\:\/\/(www\.)?developer\.mozilla\.org\/[a-z]+\-?[a-z]*\//i,%20'https://developer.mozilla.org/en-US/');%20})()); Существует 2 (два) стандартных способа вернуть этому коду оригинальный вид: Оптимизаци: Его пропустили через оптимизатор. Обфускация (в качестве шутки, но знать об этом надо, если встретите) Где писать bookmarklets??? (инструменты разработки) Как писать bookmarklets??? Хаки bookmarklet (отличия от JavaScript) Результат выполнения кода: пустая страница с надписью "hello" 2. Ещё варианты обёрток для кода bookmarklet: Вариант 1. Вызвать void последним: javascript:console.log('hello');void(0); Вариант 2. Не вызывать return вконце: javascript:(function(){ console.log('hello'); /* в конце нету return */ })(); 3. Если вставить в адресную строку код: javascript:(function(){ return 'hello'; })();, то javascript: из него удалится само в целях безопасности. Но если ввести javascript: вручную, то bookmarklet сработает. Проблемы: Выделить код Код:javascript: (function() { const s = document.createElement('script'); s.innerHTML = "window.open('https://web.archive.org/web/' + location.href)"; return s; })(); Ссылки: |
rbfyec > 11-10-2016 22:42:09 |
Да вроде есть уже тема https://forum.mozilla-russia.org/viewtopic.php?id=36530
А при чём здесь base64? |
Dorian > 11-10-2016 22:44:57 |
rbfyec пишет
Исправил. rbfyec пишет
Она не прикреплена и уже старая. Нету шапки темы. Хотя перенести что-то оттуда можно. |
Dorian > 21-10-2016 10:12:06 |
Пример 4: скрытый текст Выделить код Код:javascript: void((function() { window.open('https://web.archive.org/web/' + document.location.href); })()); |
bar22890 > 17-12-2016 12:47:33 |
|
Machine79 > 01-01-2017 17:08:28 |
bar22890 пишет
Не много не по теме форум выбрал Здесь вроде только Mozilla ???? |
Xant1k > 11-02-2017 13:54:48 |
del |
Mishania > 02-03-2017 06:24:58 |
Есть у меня буркмарклет Upload Выделить код Код:javascript:(function(){var%20c='ujs_max_upload',w=window,d=(w.document.body%20instanceof%20HTMLFrameSetElement%3Fw.frames[0]:w).document,e=d.getElementById(c);if(e){e.del();return};e=d.createElement('div');e.id=c;e.setAttribute('style','display:none;position:fixed;right:0;bottom:0;width:auto;height:auto;border:1px%20solid%20%23555;padding:10px;text-align:left;z-index:99999;background-color:%23EEE;background:-o-skin(%5Cx22Window%20Skin%5Cx22);');e.add=function(lnk,frm){var%20d=this.ownerDocument,a=d.createElement('a');a.href=lnk.href;a.target='_blank';a.setAttribute('style','padding:0;margin:0;border:none;text-decoration:none;color:%2300C;font:14px%20Times%20New%20Roman;');a.appendChild(d.createTextNode(lnk.text));this.appendChild(a);var%20f=d.createElement('form');f.action=lnk.action;f.method='post';f.enctype='multipart/form-data';f.target='_blank';f.setAttribute('style','display:block;margin:5px;');var%20t=d.createElement('input');t.type='file';t.name=lnk.name;t.setAttribute('style','width:auto;height:auto;padding:1px;margin:0;border-color:%23AAA;font:12px%20Arial;');t.onchange=function(){this.nextSibling.disabled=!this.value};f.appendChild(t);var%20s=d.createElement('input');s.type='submit';s.value='Upload';s.disabled=true;s.setAttribute('style','width:auto;height:auto;padding:1px%204px;margin:0%200%200%202px;color:buttontext;font:12px%20Arial;');f.appendChild(s);if(frm)for(var%20name%20in%20frm){var%20h=d.createElement('input');h.type='hidden';h.name=name;h.value=frm[name];f.appendChild(h)};this.appendChild(f)};e.vis=function(v){this.style.display=v%3F'block':'none';return%20this.offsetHeight*this.offsetWidth};e.del=function(){this.vis(false);this.parentNode.removeChild(this)};var%20b=d.createElement('div');b.title='Close';b.setAttribute('style','display:block;float:right;height:18px;width:18px;padding:0;margin:-5px;border:none;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=");background:-o-skin(%5Cx22Caption%20Close%20Button%20Skin%5Cx22);cursor:pointer');b.onclick=function(){this.parentNode.del()};e.appendChild(b);e.add({href:'http://fastpic.ru',text:'FastPic.ru',action:'http://fastpic.ru/uploadmulti',name:'file[]'},{uploading:'1'});e.add({href:'http://rghost.ru/',text:'Rghost.ru',action:'http://kaon.rghost.ru/files',name:'file'},{'data-max-file-size':'52428800'});d.documentElement.appendChild(e);e.vis(true)})(); Отправляет файлы на fastpic и rghost. Но теперь с rghost он не справляется. Почините пожалуйста, или предложите что-то альтернативное. |
bugmenot > 23-03-2017 13:17:09 |
Возможно ли получить доступ к gBrowser из bookmarklet? |
Пандёнок > 25-04-2020 09:24:55 |
У меня в Firefox есть несколько букмарклетов для перевода текста и страниц. Но когда я захожу на сайт addons.mozilla.org и пытаюсь перевести какое-нибудь английское описание расширения — ни один из букмарклетов не срабатывает. Как это обойти? |
Inko7 > 25-04-2020 12:56:09 |
Пандёнок Выделить код Код:/* 2662: disable webextension restrictions on certain mozilla domains (см. 4503) [FF60+] ***/ user_pref("extensions.webextensions.restrictedDomains", ""); /* 4503: disable mozAddonManager Web API [FF57+] * [NOTE] На FF60+ совместно с (2662) заставит работать расширения на AMO и т.п. * привилегированных страницах. Например переводчики. В итоге функционал удаления, * поломается и кнопка установки на AMO всегда будет в состоянии "Установить...". ***/ user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); // [HIDDEN PREF] |
oleg.sgh > 30-04-2020 06:11:59 |
Пандёнок скрытый текст Выделить код Код:javascript:var t=((window.getSelection&&window.getSelection())||(document.getSelection&&document.getSelection())||(document.selection &&document.selection.createRange&&document.selection.createRange().text));var e=(document.charset||document.characterSet);if(t!=''){window.open('http://translate.google.com/translate_t?text='+t+'&hl=ru&langpair=auto|ru&tbb=1&ie='+e);}else{window.open('http://translate.google.com/translate?u='+escape(location.href)+'&hl=ru&langpair=auto|ru&tbb=1&ie='+e);};void 0; Выделить код Код:javascript:(function(){ var text = encodeURI(document.getSelection()); if (!text.length) { text = prompt('%D0%A7%D1%82%D0%BE %D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%B5%D1%81%D1%82%D0%B8') } var url = 'https://translate.yandex.ru/?text=' + text + ' &sl=es&tl=pt#';%20window.open(url,'trans','left=0,top=90,width=1080,height=400,toolbar=0,location=0,resizable=1');%20})(); |
Пандёнок > 06-01-2021 21:26:52 |
Inko7 Выделить код Код:javascript:var%20t=((window.getSelection&&window.getSelection())||(document.getSelection&&document.getSelection())||(document.selection%20&&document.selection.createRange&&document.selection.createRange().text));var%20e=(document.charset||document.characterSet);if(t!=''){window.open('http://translate.google.com/translate_t?text='+t+'&hl=ru&langpair=auto|ru&tbb=1&ie='+e);}else{window.open('http://translate.google.com/translate?u='+escape(location.href)+'&hl=ru&langpair=auto|ru&tbb=1&ie='+e);};void 0; (который должен при невыделенном тексте переводить всю страницу, а при выделенном — этот текст) Выделить код Код:javascript:q=(document.location.href);void(open('http://translate.google.com/translate?u='+escape(q))); Выделить код Код:javascript:q=(document.location.href);void(open('http://translate.google.com/translate?u='+escape(q),'_self')); (моb самодельныt, для перевода только всей страницы) 06-01-2021 21:29:44 06-01-2021 21:44:59
использовать
или
Соответственно, как минимум не нужен элемент Обновил букмарклеты для Переводчика Google в FAQ в соответствии с тем, как это работает из расширения To Google Translate. |
zzzephire > 31-01-2021 22:16:10 |
Букмарклет для копирования текущего URL в виде BB-кода для сообщения форума. После вызова букмарклета появляется окошко с выделенной ссылкой в виде BB-кода, которую необходимо самостоятельно скопировать. Чтобы закрыть окошко достаточно нажать кнопку Enter. Букмарклет Выделить код Код:javascript:{prompt('URL:',`[url=${document.location}]${document.title}[/url]`);}void(0); Получим BB-код в виде: Выделить код Код:[url=https://forum.mozilla-russia.org/viewtopic.php?pid=780539]Bookmarklets (букмарклеты) - закладки с JavaScript кодом | Форум Mozilla Россия[/url] |
zzzephire > 01-02-2021 02:06:30 |
Поиск текста по текущему домену, также ищется выделенный текст. Если текст не был выделен, то будет выдан запрос. DuckDuckGo Выделить код Код:javascript:{q=ClearSpace(document.getSelection().toString());if(!q)q=ClearSpace(prompt('Search for:'));if(q){const qe=encodeURIComponent(`site:${document.domain} ${q}`);window.open(`https://duckduckgo.com/?ia=web&q=${qe}`)}}function ClearSpace(src){return src.trim().replace(/\s{2,}/g,' ')}void(0); Google Выделить код Код:javascript:{q=ClearSpace(document.getSelection().toString());if(!q)q=ClearSpace(prompt('Search for:'));if(q){const qe=encodeURIComponent(`site:${document.domain} ${q}`);window.open(`https://www.google.com/search?q=${qe}`)}}function ClearSpace(src){return src.trim().replace(/\s{2,}/g,' ')}void(0); Yandex Выделить код Код:javascript:{q=ClearSpace(document.getSelection().toString());if(!q)q=ClearSpace(prompt('Search for:'));if(q){const qe=encodeURIComponent(`site:${document.domain} ${q}`);window.open(`https://yandex.ru/search/?text=${qe}`)}}function ClearSpace(src){return src.trim().replace(/\s{2,}/g,' ')}void(0); |
vending_machine > 01-02-2021 02:32:37 |
zzzephire пишет
А можно такое же только |
zzzephire > 01-02-2021 03:06:43 |
vending_machine пишет
vending_machine пишет
Чтобы КимКиДук нашел что-то, это что-то должно быть проидексировано поисковиками, а для этого нужно время |
oleg.sgh > 01-02-2021 05:13:57 |
zzzephire скрытый текст Выделить код Код:javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("%D0%9D%D0%B0%D0%B9%D1%82%D0%B8%20%D0%BD%D0%B0%20%D1%81%D0%B0%D0%B9%D1%82%D0%B5").replace(/\s\+/g,"+");if(q!=null)window.open("https://yandex.ru/search/?text="+q.replace(/\s+/g,"+")+"+site:"+location.hostname);void(0) |
zzzephire > 01-02-2021 14:18:35 |
oleg.sgh |
oleg.sgh > 01-02-2021 18:01:42 |
Поиск выделенного на странице в поисковых системах. Если ничего не выделено, то откроется окно ввода. скрытый текст Яндекс карты Выделить код Код:javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("Яндекс карты").replace(/\s\+/g,"+");if(q!=null)window.open("https://yandex.ru/maps/?text="+q.replace(/\s+/g,"+"));void(0) Гугл карты Выделить код Код:javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("Гугл карты").replace(/\s\+/g,"+");if(q!=null)window.open("https://www.google.ru/maps?q="+q.replace(/\s+/g,"+"));void(0) Ютуб Выделить код Код:javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("Ютуб").replace(/\s\+/g,"+");if(q!=null)window.open("https://www.youtube.com/results?search_query="+q.replace(/\s+/g,"+"));void(0) В название самого букмарклета можно добавить эмоджи (символы). . |
ionessi > 11-02-2021 09:02:57 |
oleg.sgh пишет
Перестали работать все букмарклеты с перенаправлением на следующую вкладку. Можно что-нибудь с этим сделать? |
oleg.sgh > 11-02-2021 12:48:47 |
ionessi |