Перенаправить на промежуточную страницу перед переходом на внешний сайт - PullRequest
1 голос
/ 11 февраля 2010

Вот моя проблема. Я работаю в CMS, и пользователи могут создавать гиперссылки (как внутренние, так и внешние). Мне интересно, есть ли хороший способ проверить, нажимает ли пользователь ссылку, переходят ли они на внешний сайт. Я не хочу ничего делать, если они используют кнопки «назад» / «вперед», что-то вводят в адресную строку и т. Д. Я просто хочу перенаправить их на страницу нашего сайта, которая берет адрес, на который они ДЕЙСТВИТЕЛЬНО хотят перейти. запросите строку и отобразите 5-секундное (или около того) сообщение о том, что они покидают наш сайт, и мы не несем ответственности за то, что там есть, и т. д. и т. д. Поскольку конечные пользователи будут нести ответственность за создание большинства ссылок, научить их указывать ссылки на промежуточной странице не идеальны, поэтому мне было интересно, есть ли простое решение с использованием javascript.

Ответы [ 3 ]

1 голос
/ 11 февраля 2010

Вы можете использовать jQuery , чтобы прикрепить событие щелчка ко всем ссылкам на вашем сайте, которые являются внешними (начинаются с http, за исключением некоторых особых случаев), которые затем могут показать модальное диалоговое окно или установить window.location на промежуточную страницу (можно добавить строку запроса var для внешнего URL). Вы можете сделать пользовательский селектор для получения внешних ссылок, а затем прикрепить поведение:

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

$('a:external').click(function() { 
    //show your dialog box or set window.location
    //link in question will be $(this).attr('href')
});
1 голос
/ 11 февраля 2010

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

Так что-то вроде:

$('a').click(function() {
    if this.href.indexOf('mydomain.com'!=-1)
      return true;
    else{
      window.location = "intermediate.html?href=" + this.href;
    }
});

Кто-нибудь знает, какой удар по производительности может иметь прикрепление события к каждому тегу привязки на странице?

0 голосов
/ 11 февраля 2010

Вам следует заменить ссылки пользователей собственными специальными ссылками (например, http://yoursite.com/redirect.ashx?http://external.com), когда они сохраняют свои данные, или, что лучше, когда вы передаете пользовательский контент другим пользователям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...