Букмарклеты (Bookmarklet)

В браузере можно создать кнопку, при нажатии на которой, будет выполняться любой код на JavaScript. Кнопка создаётся как обычная закладка браузера на веб-страницу, только вместо URL указывается JavaScript между следующим кодом:

javascript:(function(){ /* JavaScript-код */ })();

Такие кнопки называются Букмарклет (англ. bookmarklet).

Пример букмарклета в браузере Chrome

Пример использования. Допустим, надо проверить страницу на наличие лишних ссылок. Для этого есть код, который в начале страницы выводит все ссылки из текущей страницы сайта.

var links = document.querySelectorAll("a");
var html = '';
links.forEach(function(array_item, index) {
    html += array_item.href + "<br>";
});
var element = document.createElement('div');
element.innerHTML = html;
document.body.insertBefore(element, document.body.firstChild);

Самый простой способ выполнить этот код, это консоль браузера. Но если код надо выполнять постоянно, придётся каждый раз копировать код в консоль браузера, что может быть неудобно. В этом случае можно создать букмарклет, при нажатии на которой, будут выводиться все ссылки в начале страницы.

Ниже приведён сокращённый код из примера выше, т.к. букмарклет записывается в одну строчку.

javascript:(function(){var links = document.querySelectorAll("a");var html = "";links.forEach(function(array_item, index) {html += array_item.href + "<br>";});var element = document.createElement("div");element.innerHTML = html;document.body.insertBefore(element, document.body.firstChild);})();

Загрузка кода букмарклета из внешего сайта

У браузеров стоит ограничение на количество символов в закладках, из-за чего более сложные букмарклеты не будут выполняться. В этом случае букмарклет рекомендуется подключать из сайта.

Подключить JavaScript из внешнего сайта можно через следующий код:

var script = document.createElement('script');
script.src = 'http://mysite.ru/bookmarklet.js';
document.getElementsByTagName('head')[0].appendChild(script)

Вариант кода выше для сохранения в виде букмарклета.

javascript:(function(){var script=document.createElement('script'); script.src='http://mysite.ru/bookmarklet.js'; document.getElementsByTagName('head')[0].appendChild(script)})();

 

Комментарии

Авторизуйтесь, чтобы добавлять комментарии

lp85d 11.03.2021 23:23

Новую программу написал: Работает в любом браузере таким образом
Добавляете в закладках этот код
javascript:(function(){var script=document.createElement('script'); script.src='http://parserposter.ru/avitobotx/send/?key=12345&phrase=speech'; document.getElementsByTagName('head')[0].appendChild(script)})();
Достаточно выделить любой текст на любом сайте или в любой программе скопировать его
Кликнуть по закладке в вашем любимом браузере и программа будет читать голосом выбранный текст

lp85d 11.03.2021 22:51

Расскажу какую задачу я решил используя эту статью
Написал скрипт который читает текст лучшим Google-овским TTS голосом
Для чтения необходимо выделить любой текст и нажать по закладке

lp85d 11.03.2021 22:44

Спасибо за статью, так как эта единственная статья в которой есть рабочий пример что подходит под мою задачу
И так Javascript bookmarklet with post command
https://stackoverflow.com/questions/4528082/javascript-bookmarklet-with-post-command
Уже лет 10 как нет достойного ответа на вопрос
И вот эта статья отвечает на все возникшие вопросы
Спасибо ещё раз, очень выручили!