当前位置:  开发笔记 > 编程语言 > 正文

检查推荐人

如何解决《检查推荐人》经验,为你挑选了3个好方法。

我用它来检查是否有人来自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> gnarf..:

试试这个:

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用于正则表达式的深入解释.很有帮助.

2> Skilldrick..:

关闭你的ifparen ......


:)每个人都会犯这样的错误.使用会给你错误的东西(比如Firebug),因为盯着一个静默失败的JavaScript页面就是PITA.

3> TimSmith-Aar..:

通过在引荐来源中查找域名,我一直在使用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');
    }
}


唯一的问题是,如果引用者在其中包含一个子URL作为查询参数,比如说.
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有