Многие рядовые пользователи не знают, что такое браузерные закладки. Да чего уж там, они не знают где находится адресная строка и даже зачем она нужна. Такие люди ищут сайт «Одноклассники» в «Яндексе», а «Яндекс» в «Гугле» и т.д. При этом в качестве домашней страницы у них установлен «Майл». И если что-то в браузере откроется иное, то это будет равносильно поломке компьютера в целом. Это тяжёлый случай, но со временем и желанием, можно вылечить. Так вот, эта статья не для них!
Всё началось давно, предположительно с «кнопки» в настройках WordPress’a, которая позволяла опубликовать открытый в данный момент сайт как новый пост. Эту кнопку нужно было добавить себе в закладки с помощью перетаскивания. Тогда это казалось интересным, но не нужным. Параллельно с этим; В процессе разработки сайтов иногда приходилось проверять JavaScript’ы на странице, но каждый раз редактировать и перезагружать страницу было очень неудобно и я случайно выяснил, что скрипт можно выполнять в адресной строке. И вот однажды, когда что-то нужно прямо здесь и сейчас, мне понадобилось узнать пароль скрытый за «звёздочками» в поле веб-формы, а под руками ничего не было, и я начал искать что ни-будь эдакое в поисковике. А спустя немного времени мне удалось найти JavaScript сниппет, который вскрывал все поля для ввода пароля, который потом и был помещён в закладки, по типу той самой кнопки. С тех пор и пошла разработка функциональных закладок с JS сниппетами. Здесь я хочу поделиться некоторыми из них.
Вскрыть все поля с паролями
Изменяет тип полей «input» с «password» на «text», тем самым убирая скрывающие «звёздочки»/точки и показывая пароль. Может пригодится, когда браузер помнит набранный ранее пароль и может автоматически ввести пароль, а вы уже не помните.
javascript:(function(){Array.prototype.slice.call(document.querySelectorAll("input[type='password']")).map(function(el){el.setAttribute("type","text")})})();
Показать всё что скрыто
Убирает скрывающие/выключающие атрибуты со всех тегов, например такие как «disabled», «display», «visibility». Поможет если нужно активировать форму или посмотреть, то что должно появиться после заполнения формы и т.д. Вариантов применения очень много.
javascript:(function(){Array.prototype.slice.call(document.querySelectorAll("*")).map(function(el){if(el.disabled==true)el.disabled=false;if(el.style.display=="none")el.style.display="";if(el.style.visibility=="hidden")el.style.visibility=""})})();
Ссылки с иконками
Наверно не очень практичный скрипт, но он добавит ко всем ссылкам на странице иконки сайтов.
javascript:jQuery('a[href^="http"]').each(function(){jQuery(this).css({'padding-left':'15px','background':'url(https://favicon.yandex.net/favicon/'+this.hostname+') left center no-repeat','background-size':'13px'});});
Быстро блокнот
Самый маленький сниппет, и кстати не JavaScript. В новой вкладке организует простенький блокнот, для быстрого редактирования текста.
data:text/html,<!doctype html><html contenteditable></html>
Шифрование текста алгоритмом AES
Сниппет позволит зашифровать и расшифровать выделенный текст на веб странице с заменой. Этой штуке я посветил отдельный сайт — AES fas!
javascript:(function(){if(typeof window.AESf==="undefined"){var aJS=document.createElement("script");aJS.type="text/javascript";aJS.src="https://goo.gl/JuQ6cj";document.getElementsByTagName("head")[0].appendChild(aJS)}else AESf()})();
Разрешить выделение
Маленькая хитрость с использованием стилей, которая блокировала возможность выделения текста, теперь не помешает скопировать текст.
javascript:Array.prototype.forEach.call(document.querySelectorAll("*"),function(e){"none"==window.getComputedStyle(e).getPropertyValue("user-select")&&(e.style.userSelect="auto")});
Удалить слушателей событий
Отключает привязку функций к событиям.
javascript:(function(){for(var eventType in getEventListeners(document))getEventListeners(document)[eventType].forEach(function(e){document.removeEventListener(eventType,e.listener)})})();
Клонирование
Просто клонирует страницу, при этом все функции прикрепленные к событиям перестают работать.
javascript:(function(){document.body=document.body.cloneNode(true)})();