Facebook хак — выполнение FBJS по клику на fb:prompt-permission
Как многие знают, работаю я в компании i2we, которая занимается созданием приложений под социальную сеть Facebook. У фэйсбука есть свои теги, которые называются FBML, своя JavaScript библиотека FBJS (причем весь ваш JS-код приводится именно к ней, потому есть определенные ограничения). Есть также так называемые «расширенные права доступа» (extended permissions) — пользователь разрешает приложению совершать те или иные действия (менять его статус, отсылать email и sms). Попросить у него определенные права можно с помощью FBML тега <fb:prompt-permission>, его обязательный параметр — perms, в котором и заключается название «extended permission», например, «email» или «sms». Есть еще необязательный параметр next_fbjs — в нем задается название функции, которая запустится после того, как пользователь в диалоге подтвердит приложению расширенное право доступа. Диалог этот вызывается тегом <fb:prompt-permission>, текст который в нем заключен является ссылкой, при клике на которую и выскакивает диалог с двумя кнопками «Подтвердить» и «Отмена».
Так вот у нас была задача, чтоб засчитывать пользователю определенное действие, даже если он нажал Cancel, а соответствующего события, как next_fbjs нет. Было решено вызывать AJAX запрос при клике на ссылку вызова диалога, но опять таки у этого FBML тега нет события onclick. Решение следующее — поместить внутрь fb:prompt-permission тег <div>, а уже div-у навешать на onclick требуемую JavaScript функцию.
Ниже тестовый пример:
<form> <input type="text" name="test" id="test" /> </form> <fb:prompt-permission perms="email"><div onclick="testjs();">Gimme permission</div></fb:prompt-permission> <script type="text/javascript"> function testjs() { document.getElementById('test').setValue('Yes!'); //AJAX here return false; } </script>
рубрики: Разработка | 2 комментария