sly2m (sly2m) wrote,
sly2m
sly2m

Как вставить кнопку Like из Facebook в ЖЖ (пошли на второй круг)

Сначала немного истерики тЁзка-like style:

…криворукие ебалаи!…асы из СУПа…чтоб вас распи…ваши визитки – гав…таких кретинских иллюстраций еще поискать…вы ничего не понимаете в программи…чудовищно унылая х…так верстают только му…хочется вырвать глаза и блева…

Закончили истерику и прекратили выставлять себя толпе на посмешище для набора очков дешевой популярности, мы же не дизайнеры какие, мы - программисты. Так что по делу.

Вчера в СУПе прикрыли лавочку с публикацией кнопочек Like из Facebook и Tweet из Twitter в Живой Журнал при помощи обходных маневров, открытых мною месяц назад.

Просто обрубили вставку тега <OBJECT> с параметром DATA в записи и баста. Таким образом старые кнопочки, помещенные в посты раньше, продолжают работать, а вот при публикации новых парсер вырезает теги <OBJECT> с параметром DATA, и подменяет их своими, которые полностью убивают работоспособность данных кнопок.

Решение СУП-а понятно и возможно даже оправдано. Все-таки такой полу-хак с подменой функциональности тега <IFRAME> штука потенциально небезопасная. Теоретически (теоретически!) можно представить себе ситуацию, когда злоумышленник подгружает в IFRAME стороннюю страницу с вредоносным кодом, а пользователь ничего не может поделать, ибо над страницей в IFRAME не властен.

Можно было бы, конечно, ограничить доступ IFRAME-а (а точнее его замены в виде OBJECT) только страницами facebook и twitter, или еще что-нибудь в этом роде, варианты есть, но в СУП-е решили не париться, и отрубить лихую голову на корню.

Вообще удивительное рядом, но оно запрещено – неофициальный слоган Живого Журнала, если кто не знал. Возможности HTML тут урезаны до критического минимума, никаких тебе JavaScript, IFRAME, SSI-include, никаких посторонних вкусностей. Идея понятна – чтобы враги не залезли и ничего не поломали.

Но ведь второе десятилетие 21го века пошло, HTML5 на носу, надо как-то двигаться вперед, не считаете?


Что можно сделать в данном случае?

Решение настолько простое, что можно сказать – абсолютно тупое.

Тупо не задумываясь меняем в коде кнопки слова OBJECT на EMBED (обратите внимание, это нужно сделать ДВА раза, при открытии тега, и при его закрытии), а слово data на src, и все снова работает!

Т.е. до этого для Like мы имели:

<comment>
<object data=”http://www.facebook.com/plugins/like.php?href=http://sly2m.livejournal.com&locale=ru_RU&layout=standard&show_faces=true&width=450&height=100&action=like&colorscheme=light&ref=sly2m” type="text/html" width="450" height="100">
</object>
</comment>

а получили:

<comment>
<embed src="http://www.facebook.com/plugins/like.php?href=http://sly2m.livejournal.com&locale=ru_RU&layout=standard&show_faces=true&width=450&height=100&action=like&colorscheme=light&ref=sly2m" type="text/html" width="450" height="100">
</embed>
</comment>


То же самое для кнопки Tweet, было:

<comment>
<object width="130" height="60" type="text/html" style="width: 130px" data="http://platform.twitter.com/widgets/tweet_button.html?url=http://sly2m.livejournal.com&text=Суп хитер, а мы хитрее&via=sly2m">
</object>
</comment>

стало:

<comment>
<embed width="130" height="60" type="text/html" style="width: 130px" src="http://platform.twitter.com/widgets/tweet_button.html?url=http://sly2m.livejournal.com&text=Суп хитер, а мы хитрее&via=sly2m">
</embed>
</comment>


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

Хочется лишь надеятся, что криворукие ебалаи дальновидные программисты из СУПа бросят свою вредную привычку законопатчивать дыры паклей и выплескивать ребенка вместе с грязной водой, а поймут, что если в бизнесе существует потребительская потребность, ее нужно удовлетворять, а не делать вид, что меньше знаешь, крепче спишь, и чем меньше потребностей, тем меньше проблем и забот у кодеров на зарплате.

Не забываем так же, что данный финт с подменой тега IFRAME на теги OJBECT или EMBED работает во всех нормальных браузерах и не работает(!) в Internet Explorer-е, даже последней 9-й версии, а значит 90% потенциально вредоносного кода уже отсечено само собой одним только фактом не использования IE при работе с Живым Журналом.

А теперь, попросив прощения у читателей (я ведь обещал больше не пользоваться этими кнопками у себя в журнале, но для теста придется это сделать еще один, надеюсь последний раз) сами блескучие, сияющие, недосиськи и почти-что забавные котеги, притягивающие взгляд и курсор мышки, кнопочки:





UPD: Не забываем, кнопочки поставлены для тестирования - если видите какие-то глюки, отпишитесь в комментарии, пожалуйста. Так, на первый взгляд Opera и Google Chrome работают, а вот FireFox чего-то нет.
Продолжаем копаться в коде...

UPD2: Кто бы мог подумать на FireFox, клевый же браузер. Ну ладно IE, но Firefox...
Вот временное решение, которое НЕ работает ни в IE, ни в Firefox-e, но зато работает в Опере, Хроме и Сафари, и при этом НЕ выбрасывает никакие сообщения о неправильно установленных плагинах, т.е. пользователи IE и FireFox вообще ничего не увидят, никаких сообщений об ошибках.

<comment>
<object type="text/html" width="450" height="100">
<param name="url" value="http://www.facebook.com/plugins/like.php?href=http://sly2m.livejournal.com/403214.html&layout=standard&show_faces=true&width=450&height=100&action=like&colorscheme=light&ref=sly2m">
</object>
</comment>

Для Twitter-а в value= вставляем твиттерную строку из кода выше.


Эта тема также интересна:

http://gmolodtsov.livejournal.com/





Эта тема также интересна:

http://demyan-om.livejournal.com/


Tags: жж, код, сервисы
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 41 comments