A букмарклет - это закладка, хранящаяся в веб-браузере и содержащая команды JavaScript. которые добавляют новые функции в браузер. Букмарклеты - это ненавязчивые сценарии JavaScripts, которые хранятся в виде URL закладки в веб-браузере или в виде гиперссылки на веб-страница. Букмарклеты обычно представляют собой программы JavaScript . Независимо от того, хранятся ли утилиты букмарклета утилиты в виде закладок или гиперссылок, они добавляют функции одним щелчком мыши в браузер или веб-страницу. При нажатии букмарклет выполняет одну из множества операций, таких как выполнение поискового запроса или извлечение данных из таблицы. Например, щелкнув букмарклет после выбора текста на веб-странице, можно запустить поиск в Интернете по выделенному тексту и отобразить страницу результатов поисковой системы ..
Другое название букмарклета - favelet или favlet, производный от избранного.
Стив Кангас из bookmarklets.com придумал слово букмарклет, когда начал создавать короткие сценарии на основе предложения Netscape Руководство по JavaScript. До этого Тантек Челик называл эти сценарии фавелетами и использовал это слово еще 6 сентября 2001 года (личная электронная почта). Брендан Эйх, который разработал JavaScript в Netscape, рассказал следующее о происхождении букмарклетов:
В этом смысле они были преднамеренной особенностью: я изобрел javascript:
URL вместе с JavaScript в 1995 году и предполагал, что URL-адреса javascript:
могут использоваться как любой другой тип URL, включая возможность создания закладок. В частности, я сделал возможным создание нового документа путем загрузки, например javascript: 'hello, world'
, но также (ключ для букмарклетов) для запуска произвольного скрипта для DOM текущего документа, например javascript: предупреждение (document.links [0].href)
. Разница в том, что последний тип URL использует выражение, которое оценивается как неопределенный тип в JS. Я добавил оператор void в JS перед отправкой Netscape 2, чтобы упростить удаление любого не неопределенного значения в URL-адресе javascript:
.
Более широкая реализация Политики безопасности контента (CSP) на веб-сайтах вызвала проблемы с выполнением и использованием букмарклетов (2013-2015), причем некоторые предполагают, что это приветствует конец или смерть букмарклетов. Уильям Доннелли создал временное решение этой проблемы (в конкретном случае загрузки, ссылки и использования кода библиотеки JavaScript) в начале 2015 года, используя пользовательский скрипт Greasemonkey (Firefox / Pale Moon надстройка браузера) и простой протокол связи букмарклет-пользовательский скрипт. Он позволяет запускать (на основе библиотеки) букмарклеты на всех без исключения веб-сайтах, включая те, которые используют CSP и имеют схему URI https: //. Обратите внимание, однако, что если / когда браузеры поддерживают отключение / запрет выполнения встроенного скрипта с использованием CSP, и если / когда веб-сайты начинают реализовывать эту функцию, это «нарушит» это «исправление».
Веб-браузеры используют URI для атрибута href
тега и для закладок. Схема URI, например
http:
, file:
или ftp:
, определяет протокол и формат остальной части строки. Браузеры также реализуют префикс javascript:
, который для парсера аналогичен любому другому URI. На внутреннем уровне браузер видит, что указанный протокол является javascript, обрабатывает остальную часть строки как приложение JavaScript, которое затем выполняется, и использует полученную строку как новую страницу.
Выполняющийся сценарий имеет доступ к текущей странице, которую он может проверять и изменять. Если сценарий возвращает неопределенный тип (а не, например, строку), браузер не загружает новую страницу, в результате чего сценарий просто запускается для текущего содержимого страницы. Это позволяет вносить изменения, такие как изменение размера шрифта и цвета на месте, без перезагрузки страницы.
Анонимная функция , которая не возвращает значение, не определяет функцию и т. Д., Может использоваться, чтобы заставить скрипт возвращать неопределенный тип:
javascript: (function () {// Операторы, возвращающие не неопределенный тип, например присваивания}) ();
Однако, если сценарий включает определение / переопределение функции, например function Use_this_globally () {...}
, среда не будет заполнена им. По этой причине {произвольный сценарий}
должен быть заключен в void (...);
.
javascript: void ({произвольный сценарий});
Букмарклеты сохраняются и используются как обычные закладки. По сути, они представляют собой простые инструменты «в один щелчок», которые добавляют функциональности браузеру. Например, они могут:
«Установка» букмарклета выполняется путем создания новой закладки и вставки кода в Поле назначения URL. Кроме того, если букмарклет представлен в виде ссылки, в некоторых браузерах его можно перетащить на панель закладок. Затем букмарклет можно запустить, загрузив закладку в обычном режиме.
В Microsoft Edge невозможно добавить букмарклет в избранное, вместо этого щелкните ссылку правой кнопкой мыши и выберите «Добавить в список для чтения». Затем букмарклет можно запустить, щелкнув его в списке для чтения. В Microsoft Edge список чтения находится в избранном и открывается с помощью значка, представляющего собой стопку строк.
Этот пример букмарклета выполняет поиск в Википедии по любому выделенному тексту в окне веб-браузера. При обычном использовании следующий код JavaScript будет установлен в закладку на панели инструментов закладок браузера. С этого момента после выбора любого текста щелчок по букмарклету выполняет поиск.
javascript: (function () {function se (d) {return d.selection? D.selection.createRange (). Text: d.getSelection ()} s = se (document); for (i = 0; iБукмарклеты могут изменять местоположение, например, для сохранения веб-страницы на Wayback Machine,
javascript: location.href = 'https: // web.archive.org / save / '+ document.location.href;Открыть новое окно или вкладку веб-браузера, например, чтобы показать источник веб-ресурса, если веб-браузер поддерживает схема URI просмотра исходного кода,
javascript: void (window.open ('view-source:' + location));Показать информацию, относящуюся к текущему URL, например,
javascript: alert ('\ tdocument.URL \ n' + document.URL + '\ n \ tdocument.lastModified \ n' + document.lastModified + '\ n \ tlocation \ n' + location);среди прочего.
См. ТакжеСсылкиВнешние ссылки
- Calishain, Tara (3 февраля 2004 г.). "Bookmarklets Boost Web Surfing". PC Magazine. Проверено 31 августа 2007 г.
.