Перехват нажатий на ссылки

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Victor Gr., 29 май 2006.

  1. Victor Gr.

    Victor Gr. Гость

    Задача:

    есть html-страница со ссылками, обычными - <a href = ' ' > </a> и т. д.

    Есть JavaScript-функция func () {}.

    Хочу, чтобы эта функция вызывалась каждый раз, при нажатии на ссылку.
    Такого эффекта можно добиться, указав в тэге <a> обработчик на onmousedown = func (), но очень хочу обойтись без этого.

    Можно ли?
    Буду очень благодарен за подсказку!
     
  2. Shurup

    Shurup Гость

    можно так:
    <a href="#" onclick="func();"></a>
    <a href="em" onclick="func(); return false;"></a> - прекратить обработку дальше
    <a href="java script:func()"></a>
     
  3. Victor Gr.

    Victor Gr. Гость

    Для: Shurup
    Спасибо! Но хочется, чтобы все ссылки <a> оставались неизменными.

    Функция моя func () заменяет адрес перехода на заданный + (через параметр) нажатая ссылка.
    Может быть можно отслеживать просто все переходы браузера и заменять их адреса?
     
  4. ioni

    ioni Well-Known Member

    Регистрация:
    11 май 2006
    Сообщения:
    351
    Симпатии:
    0
    Виктор,

    Может быть проще сделать редиректную страницу?!
    Или например, ссылку помещать внутри DIV, нажатием на который и делать ссылку?

    Хотя, тьо, что советовали раньше - <a href="em.html" onclick="func(); return false;"></a>
    Это именно то, что тебе надо:

    Ссылка href="em.html" - Это тот адрес, который ты пишешь, а func() уже сам все поменяет как надо тебе
     
  5. Andrew Stephanoff

    Andrew Stephanoff Гость

    можно добавить в конец документа
    Код (Text):
    var aLinks = document.getElementsByTagName("A");
    for (var i = 0, count = aLinks.length; i < count; i ++) {
    aLinks[i].onclick = function() {
    ...
    }
    }
     
  6. Shurup

    Shurup Гость

    <a href="#" onclick="doThis*цензура*ingThings('This*цензура*ingThing.html');">Click Me</a>

    <script>
    function doThis*цензура*ingThings(em) {
    document.location.href = "http://www.mysite.com/"+veryComplexFunction()+em;
    return false;
    }

    function veryComplexFunction() {
    return "TraTatatatatatataa/"
    }
    </scirpt>

    так не пойдет?

    Или ты хочешь хакать страницу? тогда
    1. есть событие у документа, которе происходит, когда ты уходишь со страницы
    2. добавляй return false; в отлавливаемое тобой обще Onclick или типа того

    обо всех событиях ты можешь узнать здесь:
    http://msdn.microsoft.com/library/default.asp
     
  7. Victor Gr.

    Victor Gr. Гость

    Для: Andrew Stephanoff
    Кажется, именно то, что нужно! Большое спасибо!

    Для: Shurup
    > есть событие у документа, которе происходит, когда ты уходишь со страницы
    Вот-вот, или это!

    Я не хакаю страницу (а если и хакаю - то свою :rolleyes:), просто хочу засекать, когда мои посетители переходят на внешние ссылки.

    А переход со страницы будет считаться, если ссылка открывается в новом окне?
     
  8. Victor Gr.

    Victor Gr. Гость

    Для: Andrew Stephanoff

    Спрабую рабіць так, як вы падказалі. Пакуль не атрымлівацца <_<

    Вось скрыпт:

    Код (Text):
    <a href="http://vary.ru">vary</a>
    <a href="http://rambler.ru">rambler</a>
    <a href="http://ya.ru">ya</a>
    <a href="http://google.com">google</a>
    <a href="http://stars.com">starts</a>

    <script>

    function urlrw (elt) {

    var prcsr     = 'http://127.0.0.1/post/link/';
    elt.href        = prcsr + escape (elt.href).replace (/\+/g, '%2B');
    elt.onmousedown = '';
    return True;

    }

    var aLinks = document.getElementsByTagName("A");
    var count = aLinks.length;

    for (var i = 0; i < count; i++) {
    aLinks[i].onmousedown="return urlrw (this)";
    }

    </script>
    Як вызначылася пасля вопытаў, у цыкле, калі мы робім прысвойванне onmousedown, функцыя выклікаецца толькі аднойчы. А onmousedown потым не апрацоўваецца. Пры чым, памылак ніякіх у JavaScript Console ніякіх не сыплецца.

    Працую над гэтым, таму што гэта - самы лепшы шлях. Калі ён атрымацца, усё будзе як нельга лепш!
     
  9. Andrew Stephanoff

    Andrew Stephanoff Гость

    Код (Text):
    <script>

    var aLinks = document.getElementsByTagName("A");
    var count = aLinks.length;

    for (var i = 0; i < count; i++) {
    aLinks[i].onmousedown = function() {
    var prcsr     = 'http://127.0.0.1/post/link/';
    this.href       = prcsr + escape (this.href).replace (/\+/g, '%2B');
    return true;
    }
    }

    </script>
     
  10. Shurup

    Shurup Гость

    Код (Text):
    aLinks[i].onmousedown="return urlrw (this)";
    Здесь нужно присваивать ссылку на функцию.. типа так:

    Код (Text):
    function em(sender) {}

    aLinks[i].onmousedown=em;
     
  11. Shurup

    Shurup Гость

    А не знаметил.. Andrew Stephanoff ответил правильно.

    (*Я своим em просто показал, где ошибка.*)
     
  12. Vitaliy12J

    Vitaliy12J Гость

    Мда походу некто незнает, зачем делать форум такой если не кто не знает элементарных вещей. Помогли на другом форуме, вот может кому пригодится:
    Код (Text):
    <html>
    <head>
    </head>
    <body>
    <div id="box">
    <p>В этом месте к примеру будет текст статьи, а в самой статье будут ссылки на другие ресурсы. Ссылки статьи:</p>
    <p><a href="http://google.ru/" target="_blank">Поиск от Google</a><br>
    <a href="http://ya.ru/" target="_blank">Поиск от Yandex</a></p>
    </div>
    </body>
    <script>
    var box = document.getElementById('box');
    var links = box.getElementsByTagName('a');
    for(i=0; i<links.length; i++)
    links[i].onclick = function(){document.location.href='http://www.mysite.ru/';}
    </script>
    </html>
    Удачи.
     
  13. etc

    etc Гость

    Vitaliy12J Вы бы свои топики читали а не загаживали другие. :)
     
  14. Vitaliy12J

    Vitaliy12J Гость

    Извените я не в том форуме написал )) вот к этой теме http://codeby.net/forum/threads/27048.html
     
Загрузка...

Поделиться этой страницей