Букмарклеты: идея вечна?
Примерно в 1999-2000 гг., после того, как наши хомячки спёрли у буржуев идею букмарклетов (Bookmarklets: первоисточнег) и неизящно обозвали их закладурками, эта технология была в Рунете очень популярной.
Основная идея букмарклета проста - поскольку браузер позволяет использовать в ссылках, адресной строке или закладках не только URL-адреса, но и строки вида
javascript: код_на_JavaScript
, то можно сделать небольшие программки, запускаемые кликом по ссылке на странице или же кнопкой на панели закладок. Возможности этих программок будут ограничены только возможностями языка Javascript, по крайней мере, передавать данные с открытых страниц или о них программки смогут.
Вполне толковое и не устаревшее за эти годы введение в курс дела есть вот тут. К сожалению, примеры с этого сайта, да и с сайта-оригинала, прежде всего, поисковые, сильно устарели (поменялись URL'ы, формируемые поисковиками по тексту запроса), а современный пользователь изменить пару символов в неработающем коде уже не в состоянии :(
Вот 2 вдруг понадобившихся кое-кому "супер-виджета" и инструкция к ним:
ЯndeX (поиск по Яндекс)
gOOOgle (поиск по Google)
- перетащить ссылку на панель закладок любимого браузера;
- для поиска выделенного на открытой странице текста в нужном поисковике нажать соответствующую ссылку :)
- если выделенного на странице текста нет - будет запрос во всплывающем окне.
В Internet Explorer, вероятнее всего, не работает, в остальных браузерах должно.
Напомню, что в одном выбранном поисковике выделенный на странице текст можно искать и по команде контекстного меню, вызываемого правой кнопкой мыши. Кроме того, современные браузеры будут искать в "избранном" Вами поисковике и по вводу запроса непосредственно вместо URL-адреса.
Дело, конечно, не в ещё одном удобном интерфейсе, который представляют собой букмарклеты, а в том, что такие же "супер-коды" можно изготовить и для других поисковиков, и вообще для других целей.
Скажем, этот калькулятор
A+B (калькулятор)
работает прямо по ссылке или с кнопки на панели закладок, не надо переключаться ни на какие "Приложения" (как "Хроме"). Правда, формулу придётся ввести корректно, иначе она не посчитается... весь код калькулятора - это всего лишь обращение к "великой и ужасной" функции eval, имеющейся в любом интерпретаторе.
Полные коды всех трёх букмарклетов из статьи:
<a href="javascript:expr=prompt('%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5%20 %D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D1%83 (%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B: 3.5/4 sin(PI/2))',''); if(expr){with(Math){evl=parseFloat(eval(expr))};if(isNaN(evl)) {alert('%D0%9D%D0%B5%20%D1%87%D0%B8%D1%81%D0%BB%D0%BE!')} else{void(prompt('%D0%9E%D1%82%D0%B2%D0%B5%D1%82:',evl))}}else{void(null)}">A+B</a> <a href="javascript:Qr=document.getSelection();if(Qr=='') {void(Qr=prompt('%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81: ',''))};if(Qr)location.href='http://yandex.ru/yandsearch?lr=65&text='+escape(Qr)">YandeX</a> <a href="javascript:Qr=document.getSelection();if(Qr=='') {void(Qr=prompt('%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81: ',''))};if(Qr)location.href='https://www.google.ru/#newwindow=1&q='+Qr">gOOOgle</a>
Для "ручного" помещения кода букмарклета во вновь созданную закладку код из листинга надо "вытянуть" в одну длинную строку. Но любой современный браузер позволяет и просто перетащить ссылку из этой статьи на панель закладок.
К сожалению, сделать в стиле
<a href="#" onclick="код_на_JavaScript;return false">gOOOgle</a>
с отменой перехода по ссылке не получится - для такого кода браузеры будут добавлять на сохранение именно URL несуществующей закладки "#" текущего документа.
Если не переходить на новый адрес в текущей вкладке, а открывать для результатов поиска новую методом window.open
, то некоторые браузеры всё равно перейдут в текущей вкладке на объект JavaScript. Так что пусть результаты отображаются в той же вкладке, на которой вызван букмарклет, всё равно предполагается, что он будет вызываться из панели закладок, а не из содержимого страницы.
Везде предполагается, что ваша кодировка по умолчанию - Юникод.
Работой поискового кода в практически неиспользуемых сегодня фреймах HTML не озадачивался, это позволило заметно сократить код.
P.S. Вот такие закладки у меня в "Хромом" на работе успешно применяются ещё в 2019 году, просто выделяем текст на странице и переходим к поиску:
букмарклеты Яндекса и Гугля в панели закладок
Код для Яндекса:
Код для Гугля:
06.10.2013, 17:21 [11582 просмотра]