2011-01-18 4 views
2

Как я могу обнаружить внешнюю ссылку?Обнаружение внешней ссылки Нажмите?

У меня есть простой вопрос, который может иметь или не иметь простой ответ. Мне нужно определить, нажали ли некоторые пользователи моей страницы на внешнюю ссылку, например на объявление.

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

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

Извините за мой английский, так как мой родной язык не является английским.

+0

Первый вопрос: под «внешним» вы подразумеваете ссылку внутри iframe? Второй вопрос: вы хотите его обнаружить, а потом что? –

ответ

5

с JQuery, выберите все внешние ссылки и обработчик для события Click:

 
// Creating custom :external selector 
$.expr[':'].external = function(obj){ 
    return !obj.href.match(/^mailto\:/) 
      && (obj.hostname != location.hostname); 
}; 

// Manage clicks on external links 
$('a:external').click(function() { 
    // do your stuff here, ie send the link href to some server-side script 
    $.ajax({ type: "POST", url: "some.php", data: "href="+$(this).attr("href") }); 
}); 
+0

Спасибо большое, именно это я и искал. –

+0

Спасибо, что было полезно! Я также должен был проверить (href === ""), чтобы исключить эти якоря без href. – tehsis

+0

Для Google Analytics это должно быть так: '' 'var trackOutboundLink = function (url) { ga ('send', 'event', 'outbound', 'click', url, { 'transport': ' beacon ', ' hitCallback ': function() {document.location = url;} }); } JQuery (документ) .ready (функция ($) {$ \t .expr [ ':'].! Внешний = функция (объект) { \t \t возвращение obj.href.match (/^MAILTO \: /) \t \t && (obj.hostname = location.hostname); \t}; \t $ ('а: внешние'!.) нажмите (функция() { \t \t trackOutboundLink ($ (это) .attr (» href ")); \t}); });' ' – Cassiano

1

Эй, вам действительно нужно использовать Google Analytics. Если вы не хотите этого делать, проверьте это. Logging hyperlink clicks on my website

+0

http://www.google.com/analytics/ это довольно аккуратный инструмент для регистрации ссылок на клики, а также некоторых других вещей. И все, что вам действительно нужно сделать, это просто добавить несколько строк кода в конце каждого html на веб-сайте. – Neeraj

-2

Если вы можете добавить дополнительный класс к ссылкам вы могли бы сделать что-то подобное:

<a href="http://www.externalsite.com/" class="external">AD</a> 

т.е. добавить «внешний» класс к каждой ссылке, а затем с помощью JQuery, как это:

$('.external').click(function(event) { 
    // do something before the user gets redirected 
}); 

Вы также можете использовать event.preventDefault(), чтобы предотвратить действие по умолчанию (то есть перенаправление пользователя), а затем сделать что-то еще.

EDIT Если вы не можете добавить класс = «внешний» непосредственно в разметку, вы можете добавить его dinamycally с помощью JQuery, используя код, как:

$('a').each(function() { 
    if($(this).attr('href') is an external link) { 
     $(this).addClass('external'); 
    } 
}); 

Я не проверял эту секунду но он должен работать.

+0

Прокомментируйте нижний предел. –

0

Вы можете отслеживать исходящие клики, которые не относятся к текущему сайту, выполнив следующие действия:

jQuery(document).ready(function($) { 
    $('body').on('click', 'a[href^="http"]:not([href*="//' + location.host + '"])', function(){ 
     if (typeof(_gaq) !== 'undefined') { 
      _gaq.push(['_trackEvent', 'outbound', 'click', this.href.match(/\/\/([^\/]+)/)[1]]); 
      _gaq.push(['t2._trackEvent', 'outbound', 'click', this.href.match(/\/\/([^\/]+)/)[1]]); 
     } 
    }); 
}); 

Очевидно, вы можете лишить информацию Google Analytics gaq, если она вам не нужна.

Смежные вопросы