Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вызов стороннего сценария по клику юзера
Форум программистов > Интернет и сети > Web-программирование > HTML, CSS, XML, JavaScript
Holger Dee Assuran
Делаю баннерокрутилку. Нужно считать клики по баннерам. Баннеры выводятся двумя способами:
Для обычной картинки (gif, jpg, png):
<div id="$ban_position">
<a href='$address' target='banner_target'><img src='/interface/banners/$noswf' /></a></div>

и для flash-баннера:
<div id="$ban_position">У вас не установлен или отключен Flash-player</div>
<script type="text/javascript">
var so = new SWFObject("/interface/banners/$filename", "$descript", "$width", "$height", "7", "#000000");
so.write("$ban_position");
</script>

Я думаю сделать это так - при клике в пределах <div id="$ban_position">...</div> срабатывает событие onclick, обращающееся к php-сценарию, принимающему указатель баннера (можно через GET) и изменяющему значение счетчика его кликов. В идеале пользователь кликнул по баннеру и ему открылось окно с сайтом - работа сценария учета кликов ему не видна.
Отсюда вопрос - как это реализовать? Что нужно написать в onclick чтобы добиться такого поведения?
Holger Dee Assuran
Хотя, конечно, есть другой путь - можно в качестве ссылки для баннера-картинки использовать адрес сценария учета кликов с последующим редиректом, но тут я затрудняюсь по поводу Flash - ведь ссылка на ресурс в сети внутри файла и при клике на таком баннере пользователь будет сразу уходить на целевой сайт не оставляя данных о клике.
p-k
ну есть такой вариант: в див вставляешь форму, которая отправляет сценарию в невидимом фрейме нужные тебе данные

<DIV ID='$ban_position' ONCLICK='document.траляля.submit();'>
...
<FORM NAME='траляля' ACTION='сценарий_во_фрейме.пхп' METHOD='POST' TARGET='фрейм'>
<INPUT TYPE='HIDDEN' NAME='бугага' VALUE='$счетчик++'>
<INPUT TYPE='HIDDEN' NAME='сессия' VALUE='$пхп_сессия'>
</FORM>
...
</DIV>

сессия отправляется для защиты от накрутки кликов.

при кликаньи по диву должно срабатывать 2 события: переход по ссылке и отправка формы из ONCLICK








ну есть ещё вариант событие onclick вставить в HREF ссылки, но тогда страницу нужно будет открывать яваскриптом, что некруто. так что верхний вариант думаю сойдёт
Holger Dee Assuran
А как сработает такая форма если внутри дива стоит flash-объект и клик происходит по этому объекту? Потому что лично для меня стало проблемой именно то, что событие для дива не происходит если клик осуществлен по flash-объекту внутри этого дива.
Holger Dee Assuran
Мда... Несколько более подробно опишу проблему.
Holger Dee Assuran
Ой... Случайно отправил... Итак...
Баннеры на страницу выводятся двумя способами - их я уже приводил.
Объект SWFObject() предоставлен библиотекой swfobject.js (SWFObject v1.5.1: Flash Player detection and embed - ]]>http://blog.deconcept.com/swfobject/)]]>
Метод so.write() принадлежит объекту SWFObject() и заменяет содержимое <div name='$ban_position'>...</div> на код вывода swf-объекта. Это сделано для того чтобы юзеры IE переходили по ссылке в swf-файле по первому клику (обходим особенность IE - первым кликом выделяем объект - последующими с ним работаем).

Вариант с формой не пошел - так сценарий не срабатывает и в случае с swf и в случае с gif
Я на данный момент использую такой метод
<div class="$ban_position" onclick="document.location='/bannerclick.php';">...</div>

но, как я уже говорил, в случае с gif все нормально, а вот с swf - не работает.
p-k
значит нужно убрать во флеш-баннере функцию перехода по ссылке и вставить эту функцию твоему скрипту. или можно еще поискать сайты которые используют что-то похожее. на сайтах с музыкой полно таких надоедливых флеш-баннеров, посмотри как сделано у них. потому что иначе я незнаю как еще - ведь устройство апплета-то какое: создается область на экране которая полностью принадлежит флеш ролику или ява-программе. их действия и имеют больший приоритет. и при редиректе скрипт просто не успеет сработать
sax_ol
Цитата(p-k @ 11:02:2008, 16:22 )
при редиректе скрипт просто не успеет сработать

Управление скрипту просто не перейдет, я так думаю! smile.gif
Vovochka
Цитата(sax_ol @ 12:02:2008, 01:01 )
Управление скрипту просто не перейдет, я так думаю!
*

+1
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.