J'utilise ceci pour vérifier si quelqu'un vient de Reddit, mais cela ne fonctionne pas.
var ref = document.referrer;
if(ref.match("/http://(www.)?reddit.com(/)?(.*)?/gi"){
alert('You came from Reddit');
} else {
alert('No you didn\'t');
}
Les suggestions sur l'expression régulière sont également les bienvenues.
Essaye ça:
if (ref.match(/^https?:\/\/([^\/]+\.)?reddit\.com(\/|$)/i)) {
alert("Came from reddit");
}
L'expression régulière:
/^ # 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
Fermez votre if
paren ...
J'ai utilisé une alternative à RegEx en recherchant le domaine dans le référent
if (document.referrer.indexOf('reddit.com') >= 0) { alert('They came from Reddit.com'); }
EDIT: Comme le souligne thekingoftruth, cela ne fonctionne pas si reddit.com est inclus dans un paramètre d'URL, je l'ai donc un peu étendu. J'ai également ajouté àLowerCase () comme je l'ai repéré dans le RegExp ci-dessus.
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');
}
}
Essaye ça:
ref.match(new RegExp("^http://(www\\.)?reddit\\.com/", "i"))
Ou:
ref.match(/^http:\/\/(www\.)?reddit\.com\//i)