Вызов стороннего сценария по клику юзера

  • Автор темы Holger Dee Assuran
  • Дата начала
H

Holger Dee Assuran

Гость
#1
Делаю баннерокрутилку. Нужно считать клики по баннерам. Баннеры выводятся двумя способами:
Для обычной картинки (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 чтобы добиться такого поведения?
 
H

Holger Dee Assuran

Гость
#2
Хотя, конечно, есть другой путь - можно в качестве ссылки для баннера-картинки использовать адрес сценария учета кликов с последующим редиректом, но тут я затрудняюсь по поводу Flash - ведь ссылка на ресурс в сети внутри файла и при клике на таком баннере пользователь будет сразу уходить на целевой сайт не оставляя данных о клике.
 
P

p-k

Гость
#3
ну есть такой вариант: в див вставляешь форму, которая отправляет сценарию в невидимом фрейме нужные тебе данные

<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 ссылки, но тогда страницу нужно будет открывать яваскриптом, что некруто. так что верхний вариант думаю сойдёт
 
H

Holger Dee Assuran

Гость
#4
А как сработает такая форма если внутри дива стоит flash-объект и клик происходит по этому объекту? Потому что лично для меня стало проблемой именно то, что событие для дива не происходит если клик осуществлен по flash-объекту внутри этого дива.
 
H

Holger Dee Assuran

Гость
#5
Мда... Несколько более подробно опишу проблему.
 
H

Holger Dee Assuran

Гость
#6
Ой... Случайно отправил... Итак...
Баннеры на страницу выводятся двумя способами - их я уже приводил.
Объект 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

p-k

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

Vovochka

Гость
#8
<!--QuoteBegin-sax_ol+12:02:2008, 01:01 -->
<span class="vbquote">(sax_ol @ 12:02:2008, 01:01 )</span><!--QuoteEBegin-->Управление скрипту просто не перейдет, я так думаю!
[snapback]97565" rel="nofollow" target="_blank[/snapback]​
[/quote]
+1