Интересный механизм, я не знал, что закладка может получить доступ к текущей странице, открытой в браузере.
В принципе подгрузив свой js можно делать кучу прикольных вещей.
Мне например первое что пришло в голову — это сохранение выделенных кусков текста и картинок у себя на сервера, т.е. погрузил скрипт, выделил кусок страницы и нажал отправить себе в архим, а оно осхранилось уже на сервере, где ты далее можешь это посмотреть.
В общем основной плюс, за счет того, что мы получаем доступ к коду текущей страници и можем с ними совершать какие-то действия. В остальном, наверное, погрузка сервиса на эту же страницу не нужна.
Но основной плюс как технологии — это не то, что мы можем многое сделать, а простота использования для конечного пользователя — добавить ссылку в закладки очень просто, еще проще, чем установить дополнение.
Кстати, а механизм будет работать, если ссылку установить как «Домашнюю»? — это было бы удобно, т.к. например я ей вобще не пользуюсь, а вот в таком виде ей можно найти применение :).
Вобще нужно что бы эти ссылки были под рукой, а не спрятаны в менюшках.
Не, это уже моветон. JS не должен иметь возможности управлять размером, положением, внешним видом браузера — а то подумайте, какие возможности для рекламщиков появятся. По сравнению с ними popup window покажутся милой невинной забавой.
Уточнение очень хорошее, у нас в стандарте оформления кода это прописано. Я обычно так и делаю, но в статьях заменяю комментарии на русские для пущей понятности, поэтому и извиняюсь за комментарии на английском.
Спасибо за статью! Как раз недавно об этом думал! :)
Главный вопрос:
> «Какие возможности дает букмарклет?». Правильный ответ — любые.
Я хочу в своем букмарклете делать скриншоты текущей страницы. Возможно ли это?
Использование предполагается в Фаерфоксе, поэтому задачу можно упростить — использовать какие-нибудь плагины ФФ. Может ли яваскрипт обращаться к таким плагинам?
Сам по себе javascript не может этого сделать, но, подозреваю, это может сделать flash а javascript может с ним работать и подгружать его.
Опять же, вы можете либо копировать содержимое страницы вместе со всеми картинками и стилевыми файлами, чтобы построить где-нибудь на сервере копию страницы и снять скриншот.
Насчет дополнений — если плагин предусматривает такого рода функциональность, то обратиться к нему из js можно.
Скриншотить надо с локального компа — т.к. на сервере все может быть по-другому.
Нашел плагинчик, который делает все, что нужно — www.screengrab.org/
Но вот как его вызвать? И как решается вопрос с безопасностью? Чтобы стороние скрипты на странице не могли его вызывать?
Куда копать?
Копать в сторону общения с автором плагина, он расскажет, планировал ли он такого рода взаимодействие. Если он ничего путнего не скажет, то тогда нужно взять исходный код и попробовать вшить эту функциональность в плагин, потом опубликовать его и уже в самом конце сделать букмарклет.
Что касается проблем безопастности — ну, можно закрыть доступ к плагину хоть по тому же паролю. Букмарклет же динамически генерится, верно? Туда можно и логин и пароль добавить, и будет он уникальным для пользователя. А плагин перед тем, как делать то, что скрипт просит, запрашивает сервер, адекватный ли ему предоставили логин/пароль.
Я все же советую поступать другим путем:
Не запихивать весь код букмарклета в ссылку, а добавить в букмарклет лишь код инжектора, который включит в страницу яваскрипт с вашего сервера. Это позволит отследить пользовательскую активность и избавит пользователей от необходимости устанавливать новую версию букмарклета при каждом багфиксе или добавлении новой фичи.
javascript:(function(){
var s=document.createElement('script');
s.setAttribute('src', 'http://scripts.uadev.net/script.js');
document.getElementsByTagName('body')[0].appendChild(s);void(s);
})()
* This source code was highlighted with Source Code Highlighter.
Чуть-чуть позже, после того, как выполним полностью готовый проект, напишу.
Возможно, даже напишу какой-нибудь топик — наверняка там будут какие-нибудь интересные проблемы, решение которых пригодится хабралюдям.
Хотел показать букмарклет для создания многострочного статуса вконтакте, который сделал после вашего поста, но кто-то сделал мне карму -1, теперь не могу создать топик (
Букмарклеты