Проверка реферера
Я использую это, чтобы проверить, не пришел ли кто-нибудь из Reddit, однако он не работает.
var ref = document.referrer;
if(ref.match("/http://(www.)?reddit.com(/)?(.*)?/gi"){
alert('You came from Reddit');
} else {
alert('No you didn\'t');
}
Предложения по регулярному выражению также приветствуются.
Ответы
Ответ 1
Попробуйте следующее:
if (ref.match(/^https?:\/\/([^\/]+\.)?reddit\.com(\/|$)/i)) {
alert("Came from reddit");
}
Регулярное выражение:
/^ # ensure start of string
http # match 'http'
s? # 's' if it exists is okay
:\/\/ # match '://'
([^\/]+\.)? # match any non '/' chars followed by a '.' (if they exist)
reddit\.com # match 'reddit.com'
(\/|$) # match '/' or the end of the string
/i # match case-insenitive
Ответ 2
Закройте дескриптор if
...
Ответ 3
Я использовал альтернативу RegEx, ища домен в реферере
if (document.referrer.indexOf('reddit.com') >= 0) { alert('They came from Reddit.com'); }
РЕДАКТИРОВАТЬ: Как указывает thekeyoftruth, это не работает, если reddit.com включен в параметр URL, поэтому я немного расширил его. Я также добавил toLowerCase(), как я заметил, что в RegExp выше.
if (document.referrer.indexOf('?') > 0){
if (document.referrer.substring(0,document.referrer.indexOf('?')).toLowerCase().indexOf('reddit.com') >= 0){
alert('They came from Reddit');
}
} else {
if (document.referrer.toLowerCase().indexOf('reddit.com') > 0){
alert('They came from Reddit');
}
}
Ответ 4
Попробуйте следующее:
ref.match(new RegExp("^http://(www\\.)?reddit\\.com/", "i"))
Или:
ref.match(/^http:\/\/(www\.)?reddit\.com\//i)
Ответ 5
Использовать var ref = document.referer;
//ONE R вместо TWOp >