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

  • Автор темы Victor Gr.
  • Дата начала
V

Victor Gr.

#1
Задача:

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

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

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

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

Shurup

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

Victor Gr.

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

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

ioni

Well-known member
11.05.2006
340
0
#4
Виктор,

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

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

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

Andrew Stephanoff

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

Shurup

#6
<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
 
V

Victor Gr.

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

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

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

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

Victor Gr.

#8
Для: Andrew Stephanoff

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

Вось скрыпт:

Код:
<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 ніякіх не сыплецца.

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

Andrew Stephanoff

#9
Код:
<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>
 
S

Shurup

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

Код:
function em(sender) {}

aLinks[i].onmousedown=em;
 
S

Shurup

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

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

Vitaliy12J

#12
Мда походу некто незнает, зачем делать форум такой если не кто не знает элементарных вещей. Помогли на другом форуме, вот может кому пригодится:
Код:
<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>
Удачи.
 
E
#13
Vitaliy12J Вы бы свои топики читали а не загаживали другие. :)