Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2013, 00:16
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

Как выполнить по 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);
    };

};


Помогите пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2013, 00:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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);
    };

};
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2013, 02:16
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Deff
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); // возврат навески обработчика мова после закрытия окна ,если нужен. 
   // если мов, всякий раз, обрабатывается через секунду после клика, пред. строка не нужна
}

Последний раз редактировалось dmitriymar, 14.02.2013 в 05:02.
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2013, 10:14
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Кстати в случае с обработчиками DOM level 1 можно вместо preventDefault() просто возвращать return false.
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2013, 11:52
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

Всех очень благодарю, вечером буду разбираться!
Евалить мне надо вот почему.

Я в свободное от работы время пробую заниматься созданием специальных сайтов под запросы, чтобы ловить низкочастотный трафик и на этом подработать.

А тут я делал скрытую ссылку + возможность редиректа, зачем-то решил его максимально усложнить, ну будет хотябы опыт.

Сначала пхп выводит тег скрипт с ссылкой на первый жс файл, только для тех пользователей, которые пришли по ссылке с поисковиков (через referer), этот скрипт подгружает с двух урлов 2 части кода и евалом их выполняет - этот код подключает к head второй скрипт js.

Второй скрипт - это вот этот скрипт, он при клике активирует событие на движение мыши (чтоб поисковый бот не мог воспроизвести движение мыши - так у некоторых считается, что бот не может этого сделать)...

Как-то так...
Ответить с цитированием
  #6 (permalink)  
Старый 14.02.2013, 11:55
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

А евалить, потому что считается что бот ищет в js такие вхождения текста как location="http://...

И если код разбить на "loc"+"ation=\"ht"+"tp://..." то бот якобы может не усмотреть редиректа...
Ответить с цитированием
  #7 (permalink)  
Старый 14.02.2013, 12:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Petja
И если код разбить на "loc"+"ation=\"ht"+"tp://..."
И нафига эвалить это?
window['loc' + 'ation'] = 'http://..';

или
var loc  = location;
loc.href = ...


Сообщение от Petja
считается что бот ищет в js
Сильно сомневаюсь. Но утверждать не стану. Вероятно вскоре боты будут исполнять js (если не уже..)
Ответить с цитированием
  #8 (permalink)  
Старый 14.02.2013, 13:06
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Ничего не выйдет наверное
там и анализ кода -
Сообщение от Petja
А евалить, потому что считается что бот ищет в js такие вхождения текста как location="http://...
и запуск в изолированном пространстве и прослушивание трафика http://help.yandex.ru/webmaster/?id=1076158

Последний раз редактировалось dmitriymar, 14.02.2013 в 13:16.
Ответить с цитированием
  #9 (permalink)  
Старый 14.02.2013, 13:23
Аспирант
Отправить личное сообщение для Petja Посмотреть профиль Найти все сообщения от Petja
 
Регистрация: 13.03.2011
Сообщений: 57

Сообщение от danik.js Посмотреть сообщение
Сильно сомневаюсь. Но утверждать не стану. Вероятно вскоре боты будут исполнять js (если не уже..)
Думаю, исполняют, только не все подряд боты - т.к. это слишком большая нагрузка. А, например позже при наличии подозрений может прийти яваскриптовый бот.

Сообщение от dmitriymar Посмотреть сообщение
Ничего не выйдет наверное
там и анализ кода -
и запуск в изолированном пространстве и прослушивание трафика http://help.yandex.ru/webmaster/?id=1076158
У гугла может быть, у него миллиарды. А у яндекса - врядли, т.к. это сильно большая нагрузка и это стоит больших денег содержать сервера под это.

Да и вообще я объединил все возможные современные способы спрятать редирект, плюс я прятал не редирект, а ссылку.
Чтобы небыло прямой ссылки, чтоб не спалить основной сайт на который лью траф с остальных псевдосайтов.

И каждый из способов - работает отдельно у других людей на данный момент...

Т.е. если поставить тупо редирект - бан. Если спрятать одним из этих способов - то бана сразу нету.
Ответить с цитированием
  #10 (permalink)  
Старый 14.02.2013, 13:25
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Petja
А у яндекса - врядли, т.к. это сильно большая нагрузка и это стоит больших денег содержать сервера под это.
ссылка на яндекс вобщето ведёт
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
один javaскрипт код на странице много раз Animemia Общие вопросы Javascript 23 04.02.2013 21:18
Как сделать чтоб функция выволнялась по click один раз или просто выполнялась? TaH4uk.pro jQuery 1 06.12.2012 22:41
Скрипт правильно работает только один раз, после начинает выдавать ошибку. xodock Events/DOM/Window 2 23.07.2012 13:04
Как сделать чтобы text() брал только текст родителя без текста вложенных контейнеров? Andrey32 jQuery 3 23.05.2009 01:33
Как выполнить функцию с задержкой? AlexMak Events/DOM/Window 6 11.12.2008 11:53