mega.genn.org

available in English, too!

Flash 10 Antipasti и жизнь URL 18 комментариев

Sorry Mario

Я помню как все начиналось и могу рассказать об этом. Давным давно, когда динозавры пользовались модемами, сайты называли домашними страничками, а слово «google» ничего не значило, у сайтов все равно были URL’ы. Мы называли их адресами сайтов и, если хотелось повыпендриваться, могли даже сказать «уникальные адреса веб-узлов, размещенных в глобальной сети Интернет». Программисты, которых сейчас называют айти-специалистами, были предоставлены сами себе в вопросах, касавшихся веб-программирования, что и привело к ожидаемым результатам — странным адресам страниц. Стандартным примером в те времена мог послужить адрес вроде blablabla.com/?sid=23l&pid=ln123&youare=cookiemonster, который иногда был обозначением страницы поиска, а через пять минут уже мог вести в каталог товаров. Тогда словно паладины сил добра без страха в сердце появились новые ребята. Они выглядели странно, занимались только консультациями и называли себя юзабилистами.

Они обозначили конец эпохи Программистских вакханалий и каким-то образом привели к исчезновению динозавров. Было бы удивительно, если бы юзабилисты ничего не сказали об адресах страниц, поэтому они не стали молчать. На камне высекли самое важное утверждение, которое касалось URL’ов: Ибо сказано, что есмь URL и быть ему читаемым и вести постоянно на одну и ту же страницу, дабы любой пользователь или пользовательница могли его разуметь и им обмениваться. Все знают, что любой опубликованный в интернете факт становится достоверным как только его проиндексирует гугл. Так случилось и в этот раз. С того момента люди стали наслаждаться читаемыми и понятными адресами страниц, содержание которых не менялось со временем. Дошло до того, что это прижилось даже на флеш и аякс-сайтах, а адреса определенных страниц или разделов стали выглядеть примерно так: blablabla.com/products/media-and-socialising/you-ve-got-rickrolld.

После всех эти революционных событий началась социо-сетевая мания, так называемый вебдваноль. Большие объемы инфорамции привели к тому, что ее надо было хоть как-то размещать, не особенно заботясь о читаемости адреса. На передний план вышел обмен и распространение ссылок. Веб-разработчики и юзабилисты должны были сделать все, чтобы пользователь без труда мог разослать адрес конкретной страницы с видео-роликом или шуткой всем, до кого дотянется. Вот так и появились замечательные кнопки «Скопировать адрес этой страницы/видео/порно/статьи». Недостаточная стандартизация и по-прежнему негодные технологии привели к тому, что самым удобным инструменом для запихивания информации в буфер обмена пользователя оказался флеш. Когда пользователи кликали на кнопку, специальный яваскрипт встраивал в страницу уже готовый маленький флеш-ролик, который и отвечал за копирование.

Поскольку никто никогда не относился к буферу обмена очень серьезно, считая, что хранить в нем важную информацию так же умно, как и рабочие документы в корзине, не была предусмотрена защита от несанкционированного копирования в буфер обмена чего-либо из флеш-ролика без ведома пользователя. Осознав это, Adobe сообщил: С этого момента (Flash 10) если пользователю хочется что-то скопировать, то он должен повзаимодействовать с роликом. Буквально: пользователь должен кликнуть на кнопку или ссылку в ролике, чтобы тот мог получить доступ к буферу обмена. Переложив, таким образом, вину за заполнение буфера всякой ерундой на пользователя, Adobe умыл руки.

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


Если нажать на кнопку, то в буфер обмена скопируется текст «http://mega.genn.org/ — schlong is schlonger»

Вот так выглядит код встраивания с небольшим улучшением в виде апострофов вместо знаков дюйма для значения flashvars, чтобы сделать возможным копирование html-тагов с параметрами (допустим, что все файлы находятся в одной папке):

  1. <object width="636" height="48">
  2. <param name="movie" value="copybtn.swf">
  3. <param name="flashvars" value='normal=btn0.png&pressed=btn2.png&hover=btn1.png&clipboard=<a href="http://mega.genn.org/">mega.genn.org</a> — schlong is schlonger' />
  4. <embed src="copybtn.swf" flashvars='normal=btn0.png&pressed=btn2.png&hover=btn1.png&clipboard=<a href="http://mega.genn.org/">mega.genn.org</a> — schlong is schlonger' width="636" height="48" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
  5. </object>

David-m, комментируя пост Юры, заметил, что удобней было бы сделать прозрачный флеш-ролик с теми же функциями, который можно расположить над любым элементом на странице. Я сделал и такой вариант. Из всех параметров, разумеется, остался только clipboard. Если понравилось, то логично будет скачать оба swf’а в архиве (zip, 4 Кбайта).

, , ,

Комментарии и трекбеки

18.04.09•15:29 cssing :: Архив :: Копировать в буфер

[...] 16. 18 апреля | mega.genn.org » Flash 10 Antipasti и жизнь URL [...]

18.04.09•23:31 Олег

Сказка занимательная, пробудила ностальгию. Только Москва не сразу строилась, и web-серверы не могли расчленить URL на часть, указывающую на существующую директорию, и на часть, указывающую на уточняющие параметры. Поэтому параметрам пришлось выглядить столь неестественно в естесвенном для человека мире интернета.
Было бы полезно добавить во флешку прозрачное отслеживание кликов через sendVars.

19.04.09•08:24 Genn

Олег, даже тогда можно было делать адреса news.php?day=6&month=4&year=1998 вместо news.php?sid=23sddsf…&date= 891820800. В первом примерер все понятно, а во втором присутствует стандартный для тех времен и зачастую никому не нужный session id (который можно и убрать из URL’а, запихнув в те же cookies) и дата в юниксовском формате времени.

Отслеживание для того, чтобы мы точно знали, скопировал ли пользователь адрес?

25.04.09•19:32 Олег

Нет сведений, что никто не додумался называть переменные так, как показано в первом примере. Session id добавлялся в URL интерпретатором языка автоматически, если было замечено, что через куки он не сохраняется.

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

25.04.09•19:32 Олег

“Notify me of followup comments via e-mail” не работает, а очень надеялся.)

25.04.09•21:09 Genn

Олег, сведений нет, но есть огромный опыт работы. Я, конечно, слегка преувеличиваю и ерничаю, но доля правды в моих словах все же есть, и немалая ;) Достаточно вспомнить весь тот ворох статей и заметок в конце 90-х о так коряво называемых «человеко-понятных урлах».

Для оповещения по почте отыщу другой скрипт. Спасибо за bug report. ;)

27.05.09•01:34 shinkareff

Код гиперлинка не копируется. Повтор двойных кавычек.
А ламерское счастье казалось таким близким …

27.05.09•08:22 Genn

shinkareff, спасибо за то, что нашли ошибку. Сейчас окончательно проснусь и все исправим ;) А что значит «повтор двойных кавычек»?

27.05.09•11:22 shinkareff

Не уверен, что здесь код отобразится, но попробую:

27.05.09•11:41 Genn

shinkareff, код не отобразился, но я уже прочитал комментарии и в CSSing. Проблема решается (я переделал пост так, чтобы ее и не возникало) просто — для передачи параметров используем flashvars и пишем их значение в знаках апострофа, чтобы не конфликтовало с тагами, которые мы копируем. Изменения отображены в коде представленном в посте ;)

15.06.09•13:13 JabbyPanda

BTW, такой же подход, как ты описал использует библиотека SWFUpload (v 2.2) для загрузки на сервер файлов с помощью Flash Player

http://demo.swfupload.org/v220/index.htm

Great minds think alike!

18.06.09•08:18 JabbyPanda

До речі, дарую ідею – назвати свій підхід як SWFClipboard (уже є SWFAddress, SWFUpload, SWFObject…) і активно пропагувати його в Інтернеті, адже чим більше користувачів, тим краще можна буде відточити свій код.

А от FlashClipboard називати свій підхід не вартує, юристи Adobe заставлять перейменувати ;)

20.06.09•12:26 Genn

JabbyPanda, дякую за iдею. SWFAddress я навiть користуюсь ;)

8.07.10•14:21 Alex

Всё вроде хорошо, но вот есть проблема!
Мне нужно чтоб кнопка скопировала [http://www.zippyshare.com/mediaplayer/mediaplayer.swf?file=http://www21.zippyshare.com/downloadMusic%3Fkey%3D29157749xx&volume=80&autostart=false&frontcolor=0×000000&backcolor=0xa63500&lightcolor=0xffffff&type=flv]

но копируется только [http://www.zippyshare.com/mediaplayer/mediaplayer.swf?file=http://www21.zippyshare.com/downloadMusic%3Fkey%3D29157749xx] – это.

Скрипт категорически отказывается копировать всё что находиться после символа &

Что делать?

8.07.10•23:54 Genn

Alex, замените &amp; на %23.

9.07.10•18:19 Alex

%23 = #
а мне именно необходим – &

10.07.10•08:35 Genn

Задумался о чем-то и написал не то ;) %38 — это как раз код амперсанда.

10.07.10•13:15 Alex

теперь копирует всё, но не заменяет %38 на & (((

Оставить комментарий

имя и адрес электронной почты — необходимые поля

Комментировать

Свежие твитты

Другие сайты и сети