Как выполнить по onmousemove только один раз?
ссылка с id="gruz", при клике на ссылку, запускается таймаут в секунду, и потом при движении мыши по ссылке - всплывает сообщение. Проблема в том, что этих сообщений скапливается очень много одно за другим, как сделать только одно повторение?
Вот метод, который я использовал с переменной isCall, почему-то не работает... вот код: var gruz = document.getElementById('gruz'); gruz.onclick = function(event) { event = event || window.event if(event.preventDefault){ event.preventDefault(); }else{ // IE<9: event.returnValue = false; } gruz.onmousemove = function(event) { function fun() { var isCall = false; if (!isCall) { eval("alert"+"('14"+"88 \\\\o')"); isCall = true; } } setTimeout(fun, 1000); }; }; Помогите пожалуйста! |
var gruz = document.getElementById('gruz'); gruz.onclick = function(event) { event = event || window.event if(event.preventDefault){ event.preventDefault(); }else{ // IE<9: event.returnValue = false; } var start = true; gruz.onmousemove = function(event) { function fun() {if(start){start = false; var isCall = false; if (!isCall) { eval("alert"+"('14"+"88 \\\\o')"); isCall = true; } } setTimeout('fun();start = true;', 1000); }; }; |
Цитата:
evalить то зачем? а если, этот участок кода, реально, не в глобале?... setTimeout( function(){ fun(); start = true; }, 1000); eval зачем? просто alert..... отмена обработчика события: function fun() { gruz.onmousemove=null; ..... установка обработчика события : setTimeout( function(){ gruz.onmousemove = имя функции}, 1000); всё до кучи: var gruz = document.getElementById('gruz'); gruz.onclick = function(event) { event = event || window.event if(event.preventDefault) event.preventDefault(); else event.returnValue = false; if(!gruz.onmousemove) setTimeout(createMoveEvent, 1000);// навеска обработчика мова, какой начнёт работать через секунду после каждого клика, если был отменён алертом, или его не было } function createMoveEvent(){ gruz.onmousemove = doMove; } function doMove(event){ gruz.onmousemove=null; alert(14+'88 \\\\o'); ...... setTimeout(createMoveEvent,1); // возврат навески обработчика мова после закрытия окна ,если нужен. // если мов, всякий раз, обрабатывается через секунду после клика, пред. строка не нужна } |
Кстати в случае с обработчиками DOM level 1 можно вместо preventDefault() просто возвращать return false.
|
Всех очень благодарю, вечером буду разбираться!
Евалить мне надо вот почему. Я в свободное от работы время пробую заниматься созданием специальных сайтов под запросы, чтобы ловить низкочастотный трафик и на этом подработать. А тут я делал скрытую ссылку + возможность редиректа, зачем-то решил его максимально усложнить, ну будет хотябы опыт. Сначала пхп выводит тег скрипт с ссылкой на первый жс файл, только для тех пользователей, которые пришли по ссылке с поисковиков (через referer), этот скрипт подгружает с двух урлов 2 части кода и евалом их выполняет - этот код подключает к head второй скрипт js. Второй скрипт - это вот этот скрипт, он при клике активирует событие на движение мыши (чтоб поисковый бот не мог воспроизвести движение мыши - так у некоторых считается, что бот не может этого сделать)... Как-то так... |
А евалить, потому что считается что бот ищет в js такие вхождения текста как location="http://...
И если код разбить на "loc"+"ation=\"ht"+"tp://..." то бот якобы может не усмотреть редиректа... |
Цитата:
window['loc' + 'ation'] = 'http://..'; или var loc = location; loc.href = ... Цитата:
|
Ничего не выйдет наверное
там и анализ кода - Цитата:
|
Цитата:
Цитата:
Да и вообще я объединил все возможные современные способы спрятать редирект, плюс я прятал не редирект, а ссылку. Чтобы небыло прямой ссылки, чтоб не спалить основной сайт на который лью траф с остальных псевдосайтов. И каждый из способов - работает отдельно у других людей на данный момент... Т.е. если поставить тупо редирект - бан. Если спрятать одним из этих способов - то бана сразу нету. |
Цитата:
|
Часовой пояс GMT +3, время: 18:55. |