检查推荐人

时间:2010-01-08 22:53:09

标签: javascript referrer

我正在使用它来检查是否有人来自Reddit,但它不起作用。

var ref = document.referrer;
if(ref.match("/http://(www.)?reddit.com(/)?(.*)?/gi"){
    alert('You came from Reddit');
} else {
    alert('No you didn\'t');
}

关于正则表达的建议也非常受欢迎。

6 个答案:

答案 0 :(得分:90)

试试这个:

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

答案 1 :(得分:12)

关闭if paren ...

答案 2 :(得分:6)

通过在引荐来源中查找域

,我一直在使用RegEx的替代方法
if (document.referrer.indexOf('reddit.com') >= 0) { alert('They came from Reddit.com'); }

编辑:正如thekingoftruth指出,如果reddit.com包含在URL参数中,则无效,所以我对它进行了一些扩展。当我在上面的RegExp中发现时,我也添加了toLowerCase()。

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');
    }
}

答案 3 :(得分:1)

试试这个:

ref.match(new RegExp("^http://(www\\.)?reddit\\.com/", "i"))

或者:

ref.match(/^http:\/\/(www\.)?reddit\.com\//i)

答案 4 :(得分:0)

我会用这个,是不是更简单,更简单的方式?

  var referral= document.refferer;
   If(referral.includes("www.reddit.com"){
  alert("you came from reddit");
   }
     else{
    alert("you didn't come from reddit");
       {

答案 5 :(得分:-3)

使用var href = document.referrer; // ONE R而不是TWO