БлогNot. Букмарклеты: идея вечна?

Букмарклеты: идея вечна?

Примерно в 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 году, просто выделяем текст на странице и переходим к поиску:

букмарклеты Яндекса и Гугля в панели закладок
букмарклеты Яндекса и Гугля в панели закладок

Код для Яндекса:

javascript:Qr=document.getSelection();if(Qr==''){void(Qr=prompt('Запрос: ',''))};if(Qr)location.href='http://yandex.ru/yandsearch?lr=65&text='+Qr

Код для Гугля:

javascript:Qr=document.getSelection();if(Qr==''){void(Qr=prompt('Запрос: ',''))};if(Qr)location.href='https://www.google.ru/#newwindow=1&q='+Qr

06.10.2013, 17:21 [11530 просмотров]


теги: javascript ретро рунет поиск браузеры

К этой статье пока нет комментариев, Ваш будет первым