javascript 正在检查引用人

ktca8awb  于 2023-02-07  发布在  Java
关注(0)|答案(6)|浏览(86)

我用这个来检查是否有人来自Reddit,但它不工作。

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

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

wqsoz72f

wqsoz72f1#

试试这个:

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
v09wglhw

v09wglhw2#

关闭if圆括号...

nbnkbykc

nbnkbykc3#

我一直在使用RegEx的替代方法,在引用中查找域

if (document.referrer.indexOf('reddit.com') >= 0) { alert('They came from Reddit.com'); }

编辑:正如thekingoftruth指出的那样,如果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');
    }
}
q8l4jmvw

q8l4jmvw4#

试试这个:

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

或者:

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

6yt4nkrj5#

我会用这个,这不是一个较小和简单的方法吗?

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

hjzp0vay6#

使用var ref =文档.引用者;//一个R而不是两个

相关问题