Полное руководство по букмарклетам

Полное руководство по букмарклетам


Вы наверняка не новичок в закладках. Возможность добавлять веб-страницы в избранное, сохранять их или добавлять в закладки была основной функцией браузеров на протяжении десятилетий. Однако браузеры не просто позволяют добавлять веб-страницы в закладки. Вы также можете добавить закладки JavaScript, которые позволят вам делать больше, чем просто сохранять страницы.

Сценарий JavaScript, сохраненный в виде закладки, называется «букмарклетом», хотя некоторые люди также используют термины «фавелет» или «фавелет». Букмарклеты существуют с конца 90-х годов. Сайт, который их придумал, bookmarklets.com, существует до сих пор. Они просты и универсальны, что свидетельствует о том, что большинство букмарклетов, перечисленных на сайте выше, все еще работают, несмотря на то, что их не трогали в течение двух десятилетий.

Хотя в последние годы букмарклеты немного отошли на второй план, поскольку браузеры стали более функциональными, а инструменты разработки стали более зрелыми, они по-прежнему остаются ценным инструментом в арсенале любого веб-разработчика. Они просты, но функциональны и не требуют никакого дополнительного программного обеспечения для создания или использования. Если вы понаблюдаете за работой любого хорошего машиниста или инженера, вы увидите, что они постоянно создают инструменты и утилиты, даже просто инструменты, для решения проблем или достижения более красивых решений в процессе работы. Как разработчики, мы должны стремиться делать то же самое, и букмарклеты — идеальный способ облегчить это.

Создание букмарклета

Создать букмарклет очень просто. Вы пишете скрипт точно так же, как и для консоли браузера. Затем вы сохраняете его как закладку, добавляя префикс javascript: Что указывает на его использование в строке URL-адреса браузера.

Давайте начнем с создания суперпростого букмарклета, который отправляет простое оповещение. Мы возьмем приведенный ниже код, который запускает сообщение, используя alert() Метод и букмарклет.

alert("Hello, World!");

Далее мы преобразуем его в выражение немедленно вызываемой функции (IIF), которое имеет некоторые преимущества. Во-первых, он создает новую область видимости, чтобы избежать загрязнения глобального пространства имен и не позволяет нашему букмарклету мешать JavaScript, уже находящемуся на странице, или наоборот. Во-вторых, при нажатии на него будет запускаться букмарклет.

Мы добьемся этого, заключив его в анонимную функцию (лямбда) (например, (() => {})) и добавив к нему суффикс ();Кто будет выполнять нашу работу.

(() => {
  alert("Hello, World!");
})();

Для обеспечения надежности во всех браузерах нам полезно кодировать URL-адреса наших букмарклетов, чтобы избежать использования специальных символов. Без этого браузеры могут испортить и неправильно интерпретировать наш код. Хотя в случае с таким простым букмарклетом это не совсем необходимо, он может предотвратить множество проблем, которые могут возникнуть при большей сложности. Вы можете самостоятельно закодировать свой букмарклет с помощью JavaScript. encodeURIComponent() функцию или вы можете использовать один из многих существующих инструментов. Мы также сократим это до одной строки.

(()%3D%3E%7Balert(%22Hello%2C%20World!%22)%3B%7D)()%3B

мы должны префикс javascript: Чтобы наш браузер знал, что это не стандартный URL-адрес веб-страницы, а JavaScript-букмарклет.

javascript:(()%3D%3E%7Balert(%22Hello%2C%20World!%22)%3B%7D)()%3B

Установка букмарклета

В конечном итоге нам нужно добавить его в виде закладки в наш браузер. Как и следовало ожидать, это сильно зависит от используемого вами браузера.

В Safari на macOS самый простой способ — добавить веб-страницу в закладки, а затем отредактировать эту закладку в букмарклете:

Полное руководство по букмарклетам

В Firefox для настольных компьютеров самый простой способ — вторично щелкнуть панель инструментов закладок, а затем «Добавить закладку…»:

Окно Firefox с опцией «Добавить закладку».

В Chrome на рабочем столе самый простой способ — вторично щелкнуть панель инструментов закладок, а затем «Добавить страницу…»:

Окно Chrome с опцией «Добавить страницу».

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

CSS-букмарклет

Несомненно, вы с пренебрежением смотрите на приведенное выше слово «JavaScript». это CSS– Ведь трюки. Не бойтесь, потому что мы можем создавать букмарклеты, которые применяют CSS к нашей странице разными способами.

Мой личный любимый метод с точки зрения писателя — создать element with my chosen content:

javascript: (() => {
  var style = document.createElement("style");
  style.innerHTML = "body{background:#000;color:rebeccapurple}";
  document.head.appendChild(style);
})();

Более элегантный подход — использовать CSSStyleSheet интерфейс. Этот подход допускает поэтапные обновления и позволяет напрямую обращаться к объектной модели CSS (CSSOM) для чтения селекторов, изменения существующих свойств, удаления или изменения порядка правил, а также проверки вычисляемой структуры. Браузер также таким образом проверяет вводимые значения, что помогает предотвратить ввод некорректного CSS. Это более сложно, но также дает вам больше контроля.

javascript: (() => {
  const sheet = new CSSStyleSheet();
  document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
  sheet.insertRule("body { border: 5px solid rebeccapurple !important; }", 0);
  sheet.insertRule("img { filter: contrast(10); }", 1);
})();

Поскольку мы пишем CSS для общего использования на любой странице, на которой хотим использовать наш букмарклет, важно помнить, что мы можем столкнуться с проблемами эксклюзивности или конфликта с существующей таблицей стилей страницы. используя !important Обычно это считается плохим запахом кода, но в контексте переопределения неизвестных существующих стилей это разумный способ удовлетворить наши потребности.

границы

К сожалению, существуют некоторые препятствия, которые могут помешать нам использовать букмарклеты. Политики безопасности контента (CSP) являются наиболее полными. CSP — это функция безопасности, которая пытается предотвратить вредоносные действия, такие как атаки с использованием межсайтовых сценариев, позволяя веб-сайтам регулировать то, что может быть загружено. Например, вы можете запретить запуск скриптов на веб-сайте вашего банка. Букмарклет, использующий запросы из разных источников (запросы за пределами текущего веб-сайта), часто блокируется. По этой причине букмарклет в идеале должен быть самодостаточным, а не полагаться на что-то внешнее. Если вы подозреваете, что букмарклет блокируется политиками безопасности веб-сайта, вы можете проверить консоль в инструментах разработчика вашего браузера на наличие ошибок.

Firefox препятствует запуску букмарклета, поскольку встроенные скрипты не разрешены.

Поскольку букмарклеты — это просто URL-адреса, строгих ограничений на их длину нет. При использовании браузеры налагают ограничения, хотя в большинстве случаев они больше, чем те, с которыми вы столкнетесь. В ходе моего собственного тестирования (которое может варьироваться в зависимости от версии и платформы) я обнаружил верхние пределы: Самый большой букмарклет, который я мог создать как в Firefox, так и в Safari, составлял 65536 байт. Firefox не позволит мне создать букмарклет большей длины, а Safari позволит мне создать букмарклет, но при запуске он ничего не сделает. Самый большой букмарклет, который я создал в Chrome, имел длину 9999999 символов, и после этого у меня начались проблемы с взаимодействием с текстовым полем. Если вам нужно немного больше времени, вы можете рассмотреть возможность загрузки сценария из внешнего места, учитывая вышеуказанные ограничения CSP:

javascript:(() => {
  var script=document.createElement('script');
  script.src="https://example.com/bookmarklet-script.js";
  document.body.appendChild(script);
})();

В противном случае вы можете рассмотреть возможность использования инструмента пользовательских сценариев, такого как TamperMonkey, или, если есть что-то более продвинутое, рассмотреть возможность создания собственного расширения для браузера. Другой вариант — создать фрагмент в инструментах разработчика вашего браузера. Букмарклеты лучше всего подходят для коротких фрагментов.

потрясающий букмарклет

Теперь, когда вы знаете, что такое букмарклеты и на что они способны, мы можем взглянуть на некоторые полезные вещи, которые они делают. Однако прежде чем сделать это, я хочу подчеркнуть, что вам следует быть осторожными при запуске букмарклетов, которые вы найдете в Интернете. Букмарклеты, которые вы найдете в Интернете, представляют собой код, написанный кем-то другим. Как всегда, вы должны быть осторожны, бдительны и разумны. Люди могут и писали вредоносные букмарклеты, которые крадут учетные данные учетной записи или что-то еще хуже.

По этой причине, если вы вставите код в начале javascript: В адресной строке браузеры автоматически удаляют его. javascript: Префикс, предотвращающий непреднамеренный запуск букмарклета. Вам необходимо повторно ввести префикс. обойти javascript: Закладки, букмарклеты часто предоставляются в виде ссылок на странице, которые вы должны перетащить в свои закладки.

О конкретных букмарклетах уже говорилось ранее на CSS-Tricks. Учитывая эволюцию браузеров и веб-платформ, многие из них уже устарели, но есть и более современные статьи:

Обязательно читайте комментарии к этим публикациям, так как они наполнены бесчисленными замечательными закладками от сообщества. Кстати о букмарклетах от сообщества:

Если у вас есть золотые букмарклеты, которые вы считаете ценными, обязательно поделитесь ими в комментариях.

Leave a Reply

Your email address will not be published. Required fields are marked *