Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Раскрывающийся блок при нажатии на рекламную ссылку
 
 автор: TanTaL91   (06.04.2009 в 10:53)   письмо автору
 
 

Может кто поможет :)

Возникла потребность сделать следущее.

Есть список рекламных ссылок, и блок с информацией.

Нужно что бы блок с информацией открывался только после того как была нажата рекламная ссылка. Рекламеные ссылки выдаються через джава скрипт.

  Ответить  
 
 автор: PAT   (06.04.2009 в 13:02)   письмо автору
 
   для: TanTaL91   (06.04.2009 в 10:53)
 

Заработать хочется, да? Причём совершенно "на халяву", да? :-)

Сомнительно, чтобы у вас имелась ТАКАЯ информация на странице, за ради которой юзер "полезет" нажимать на рекламу...

Рекламные скрипты сейчас (раньше было иначе) в основном формируют на вашей странице <IFRAME>, внутрь которого загружают собственную страницу - т.е. ЧУЖУЮ по отношению к вашему домену. Соответственно, отследить какие-либо действия юзера на ЧУЖОЙ странице вы не сможете.

Т.е. можно, конечно, написать на странице "Кликнешь на любую рекламную ссылку - покажу голую Собчак, а кликнешь на две ссылки - покажу Собчак вместе с Тимоти в процессе!!!".
И можно скриптом определить - "завёл" ли юзер мышку на рекламный блок и сколько времени курсор его мыши там находился.
Но что именно он там фактически сделал (или не сделал) за это время - вы узнать не сможете.

Приблизительно ТАК устроены программы, обрабатывающие скачку файлов с бесплатных файлохранилищ - появляется надпись "Ссылка для скачивания будет доступна через 30 секунд" и начинается обратный отсчёт. Предполагается, что юзеру будет скучно ждать полминуты и он куда-то кликнет... А если он тупо ждал (или вовсе уходил на другое окно/вкладку), то тогда такому юзеру или выбрасывают "битую" ссылку на скачивание или же отчёт начинают заново (но уже 60 секунд, или 5 минут)...

  Ответить  
 
 автор: Doorgen   (06.04.2009 в 15:24)   письмо автору
 
   для: PAT   (06.04.2009 в 13:02)
 

Интересно :)

  Ответить  
 
 автор: Doorgen   (06.04.2009 в 15:26)   письмо автору
 
   для: Doorgen   (06.04.2009 в 15:24)
 

Я видел на 1 сайте такую штуку. Стоит блок ссылокчу если кликаешь по блоку но не нажимается рекламная ссылка то ничего не происходит, если открываешь ссылку в фоновом окне тоже блок не активизируется, а активизируется только при нажатии на ссылку и переходе туда, переходит в новом окне человек просто переключает сайт на сайт с которого он перешел, а там уже появился блок с ссылкой. Вот такая вот система.

Не не надо что бы юзер ждал не в коем случае...

Такое моно?

  Ответить  
 
 автор: AlexSol   (06.04.2009 в 16:55)   письмо автору
 
   для: Doorgen   (06.04.2009 в 15:26)
 

да, если вы выводи ссылки своим скриптом, а не сторонним

  Ответить  
 
 автор: PAT   (06.04.2009 в 17:08)   письмо автору
 
   для: Doorgen   (06.04.2009 в 15:26)
 

Раньше такое было возможно - когда рекламный скрипт внедрял свои коды прямо на страницу (а не в ифрейм). Или же если хозяин сайта сам является рекламодателем.
Если рекламная ссылка сформирована скриптом прямо на странице, то она входит в коллекцию document.links и доступна вашему скрипту на странице. На эту рекламную ссылку можно "повесить" любую инструкцию и отследить ВСЕ действия пользователя.

Но сейчас и гуглевский AddSense, и яндексовский Бегун, да и все прочие РЕАЛЬНО ПЛАТЯЩИЕ ДЕНЬГИ за клики партнёрки контекстной рекламы формируют ифреймы и грузят в него СВОИ страницы (ЧУЖИЕ для вашего скрипта).

Ещё раз пишу - отследить, что клиент "завёл" мышь в рекламный ифрейм и что после этого СРАЗУ (покуда он не "вышел" мышью из рекламного ифрейма), произошла потеря фокуса окном - вполне МОЖНО.

Как именно это реализовать?
Я уже практически ВСЁ рассказал:
1. после загрузки страницы определяете координаты ифрейма (подсказываю, что имя у него ЕСТЬ)
2. отслеживаете движение мыши по странице (onmousemove)
3. как только движение мыши прекратилось (РЯДОМ с одной из границ ифрейма, точно определить никогда не сможете, но зато можете определить направление движения) - ждёте события потери окном фокуса (onblur). Правда, надо ещё проверить, а не нажмёт ли клиент Alt-Tab
4. если клиент "зашел" мышью в ифрейм, ничего не нажимал на клаве, и если движение мыши по странице не возобновилось (начиная с какой-то границы ифрейма), а окно потеряло фокус, значит - УРА!? - клиент куда-то ткнул и вы заработали копеечку!?.
5. но УРА это именно с вопросом, потому как клиент может ткнуть не по ссылке, а РЯДОМ с ней, просто по телу документа в ифрейме. Значит, надо какое-то время ПОДОЖДАТЬ - а не "выйдет" ли клиент мышью из ифрейма через одну из его границ (потому как возвращаясь из другой вкладки, он должен будет мышью "побегать" по эрану...)

Всё поняли? :-)
"Покрутите" этот код, надеюсь, понимание проблемы придёт (сделан на скорую руку ТОЛЬКО для MSIE). Учтите, что нас интересуют "рекламные ссылки", которые открываются в новом окне:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=win-1251">
<script>
function mFunc ()
{
with (document.getElementsByName ('IFR') [0])
   {
   attachEvent ('onfocus', function () {document.getElementById ('test3').innerText = 'в фокусе'});
   attachEvent ('onblur', function () {document.getElementById ('test3').innerText = 'фокус потерян'});
   }
}
</script>
</head>
<body onload="mFunc (); focus ()" style="margin: 80px"
      onfocus="document.getElementById ('test2').innerText = 'в фокусе'"
      onblur="document.getElementById ('test2').innerText = 'фокус потерян'"
      onmousemove="document.getElementById ('test1').innerText = event.clientX + ', ' + event.clientY">
<br><br>
<script title="ЧУЖОЙ">document.write ('<iframe name="IFR" src="http://google.com"></iframe>')</script>

<br><br><hr>
Мышь: <span id="test1"></span>
<br><br><hr>
Ваш документ: <span id="test2"></span>
<br><br><hr>
Ифрейм: <span id="test3"></span>
<br><br><hr>
</body>
</html>

  Ответить  
 
 автор: Potaevsky   (06.04.2009 в 15:35)   письмо автору
 
   для: TanTaL91   (06.04.2009 в 10:53)
 

Почти в любом js-фреймворке есть такие модули. Покури jQuery или Prototype, если нужно сделать реально красиво. Ну а если тупо и как обычно - то что мешает дописывать элементу в style display:none; а когда кликнет - display:block ?

element.style = "display:block;";

  Ответить  
 
 автор: PAT   (06.04.2009 в 16:49)   письмо автору
 
   для: Potaevsky   (06.04.2009 в 15:35)
 

Вы вообще о чём тут?

Что сами курите?

Постарайтесь ВЪЕХАТЬ в тему, а не сразу писать здесь никому не нужные банальности и давать БЕСПОЛЕЗНЫЕ советы и пожелания "тоже чего-нить покурить"

Скрыть блок и потом (по какому-то событию) его показать - задача тривиальная.
Весь вопрос в том - КОГДА ИМЕННО этот блок показывать? По КАКОМУ событию?

Клик по рекламной сылке происходит в <IFRAME>, т.е. в ЧУЖОМ документе. Ни одно из событий, произошедших в ЧУЖОМ документе в <IFRAME>, не может стать известно скрипту в основном (СВОЁМ) документе.

  Ответить  
 
 автор: TanTaL91   (06.04.2009 в 21:12)   письмо автору
 
   для: PAT   (06.04.2009 в 16:49)
 

PAT вы даже не представляете как я вам благодарен за то что вы помогаете.

iframe это хорошо, но у меня рекламодетель выдает именно старым методом, без фреймов :)

Как сделать что бы было без фреймов и отслеживало именно клик :) Просто выше вы описали что если стары методом то можно отследить.

Заранее вам очень признателен.

  Ответить  
 
 автор: TanTaL91   (06.04.2009 в 21:46)   письмо автору
 
   для: TanTaL91   (06.04.2009 в 21:12)
 

Я тут пару подобных примеров нашел вот разобрать надо будет. Попробую сам если не получиться напишу.

  Ответить  
 
 автор: PAT   (07.04.2009 в 00:03)   письмо автору
 
   для: TanTaL91   (06.04.2009 в 21:12)
 

Если ссылки внедряются в сам документ, то всё ОЧЕНЬ просто.
Вешаете на тег <body> обработчик onload, по которому запускаете функцию.
Которая:
1. создаст глобальную переменную-счётчик кликов рекламным ссылкам;
2. на все рекламные ссылки "повесит" обработчик события onclick, который при клике по любой ссылке будет увеличивать показания счётчика;
3. по достижении заданного числа кликов по рекламным ссылкам какой-либо скрытый блок откроется ( или загрузится AJAX'ом недоступная ранее информация).

Приблизительно так:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=win-1251">
<script>
var QW = 2; //нужное вам количество кликов по РАЗНЫМ рекламным ссылкам

function mFunc_0 ()
{
for (var obj = document.links, j = 0; j < obj.length; j++)
if (obj [j].className.substring (0, 2) != 'ss') mFunc_1 (obj [j]);
}

function mFunc_1 (tg)
{
if (document.addEventListener) tg.addEventListener ('click', mFunc_2, false);
else if (document.attachEvent) tg.attachEvent ('onclick', mFunc_2, false);
else tg ['onclick'] = mFunc_2;
}

function mFunc_2 (e)
{
var evt = e || window.event, obj = evt.target || evt.srcElement; 
if (document.removeEventListener) obj.removeEventListener ('click', mFunc_2, false);
else if (document.detachEvent) obj.detachEvent ('onclick', mFunc_2, false);
else target ['on' + type] = null; 
if (!--QW) document.getElementById ('hid_dv').style.display = 'block';
}
</script>
</head>
<body onload="mFunc_0 ()">

<!-- Всем СВОИМ ссылкам присваиваете какой-то класс, -->
<!-- который можно и не описывать в CSS. -->
<!-- Главное, чтобы у этих имён классов был ОБЩИЙ ПРИЗНАК. -->
<!-- Например, здесь классы всех СВОИХ ссылок начинаются с символов ss. -->


...<br><a href="URL-1" target="_blank" class="ss_uy">ВАША ссылка</a><br>
...<br><a href="URL-2" class="ss01" target="_blank">ВАША ссылка</a><br>

<!-- Ваши ссылки могут открываться и в том же окне -->
<!-- Но здесь для тестирования все они открываются в новом окне -->


<h1 align="center">Кликнешь по двум РАЗНЫМ рекламным ссылкам, получишь большую сладкую конфету!
<h3 align="center">(А иначе - ни хрена не получишь!)</h3></h1>

<script title="ЧУЖОЙ">
document.write ('<a href="http://google.com/" target="_blank">Рекламная ссылка 1</a><br>');
document.write ('<a href="http://yandex.ru/" target="_blank">Рекламная ссылка 2</a><br>');
//...
document.write ('<a href="#" onclick="window.open (\'http://yahoo.com/\', \'\'); return false">Рекламная ссылка 3</a><br>');
</script>

...<br><a href="URL-3" class="ssqq" target="_blank">ВАША ссылка</a><br>
...<br><a href="URL-4" target="_blank" class="ss06qwerty">ВАША ссылка</a><br>
...<br><a href="URL-5" class="ss44" target="_blank">ВАША ссылка</a><br>
...<br><a href="URL-100" target="_blank" class="ssAw">ВАША ссылка</a><br>

<div id="hid_dv" style="display: none; padding: 20px; background: lime">
Скрытая информация (или сюда будет подгружаться с сервера то, что обещано юзеру)</div>
...
</body>
</html>

  Ответить  
 
 автор: TanTaL91   (07.04.2009 в 07:56)   письмо автору
 
   для: PAT   (07.04.2009 в 00:03)
 

Слов нету. ОГРОМНОЕ ПАСИБА!!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования