Javascript document.referrer判斷訪客來(lái)源網(wǎng)址
今天遇到一個(gè)蠻有趣的問(wèn)題,由于公司與一些廠商有合作關(guān)係,因此雙方的網(wǎng)站中也都會(huì)交換連結(jié),當(dāng)今天合約也終止后,但對(duì)方始終一直沒把連結(jié)的部分下掉時(shí),這有時(shí)會(huì)產(chǎn)生一些不必要的誤會(huì),讓一般的使用者認(rèn)為雙方還有合作關(guān)係,固然說(shuō)這樣子可賺到一些流量,但相對(duì)的也造成了一些誤解,因此上頭則希望能否去判斷使用從它站連來(lái)時(shí),就把它拒絕在門外,這讓梅干退了三步,原本以為要從主機(jī)來(lái)作設(shè)定,上網(wǎng)找了一些文件后,才發(fā)現(xiàn)只要用簡(jiǎn)單幾行的javascript,就可抓到使用的來(lái)源,以及作出一些防范的措施。
效果圖:
<script type="text/javascript"> var refurl=document.referrer; if(refurl.indexOf("wowgame")>-1){ alert("你的來(lái)源網(wǎng)址為:【"+document.referrer+"】目前本站與該站已終止合作。"); location.replace(refurl); } </script>
其實(shí)方法真的很簡(jiǎn)單,因此下次若各位也有遇到此問(wèn)題時(shí),也可試試看此方法,這邊梅干是將它再把網(wǎng)頁(yè)導(dǎo)回去,而各位也可多花點(diǎn)功夫,當(dāng)判斷是某網(wǎng)址連入時(shí),跳到某一個(gè)宣告,讓網(wǎng)友知道雙方已經(jīng)終止合作,順便還可以賺點(diǎn)流量。
應(yīng)用范圍:一般用于檢查來(lái)源頁(yè)面的關(guān)鍵詞,一般是用來(lái)判斷用戶通過(guò)搜索引擎來(lái)的用戶,輸入了什么關(guān)鍵詞進(jìn)來(lái)的,然后進(jìn)行判斷。右下角給出相關(guān)的鏈接。
對(duì)于增強(qiáng)用戶體驗(yàn)有很大的好處,讓訪客快速的找到相關(guān)信息。
下面是一些特殊的補(bǔ)充
js如何判斷訪問(wèn)來(lái)源是來(lái)自搜索引擎(蜘蛛人)還是直接訪問(wèn)
以下javascript腳本代碼可以實(shí)現(xiàn)判斷訪問(wèn)是否來(lái)自搜索引擎。
代碼如下:
< script type = "text/javascript" > if (window.name != 'ad_app6') { var r = document.referrer; r = r.toLowerCase(); //轉(zhuǎn)為小寫 var aSites = new Array('google.', 'baidu.', 'soso.', 'so.', '360.', 'yahoo.', 'youdao.', 'sogou.', 'gougou.'); var b = false; for (i in aSites) { if (r.indexOf(aSites[i]) > 0) { b = true; break; } } if (b) { self.location = '要跳轉(zhuǎn)的網(wǎng)址'; window.adworkergo = 'ad_app6'; } } < /script>/
介紹的這個(gè)JS判斷蜘蛛來(lái)源的方法腳本是寫在body的onload里面的。即頁(yè)面加載時(shí)進(jìn)行判斷。代碼如下:
body { onload: expression( if (window.name != "Yang") { var str1 = document.referrer; str1 = str1.toLowerCase(); var str6 = 'google.'; var str7 = 'baidu.'; var str4 = 'yahoo.'; var str8 = 'youdao.'; var str9 = 'sogou.'; var str5 = 'soso.'; if (str1.indexOf(str7) > 0 || str1.indexOf(str6) > 0 || str1.indexOf(str4) > 0 || str1.indexOf(str3) > 0 || str1.indexOf(str8) > 0 || str1.indexOf(str9) > 0 || str1.indexOf(str5) > 0 && "zh-cn" == navigator.systemLanguage) { self.location = 'http://www.abc.com/'; window.name = "Yang"; } }); }
這個(gè)JS判斷蜘蛛來(lái)源方法不太好用。特別是在需要判斷更多蜘蛛來(lái)源時(shí)代碼寫起來(lái)比較麻煩。
js判斷訪問(wèn)來(lái)源
主要是判斷pc android ios等
通過(guò)navigator的userAgent屬性來(lái)判定
userAgent 屬性是一個(gè)只讀的字符串,聲明了瀏覽器用于 HTTP 請(qǐng)求的用戶代理頭的值。一般來(lái)講,它是在 navigator.appCodeName 的值之后加上斜線和 navigator.appVersion 的值構(gòu)成的。
例如:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)
function checkBrowser(){ var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { //移動(dòng)終端瀏覽器版本信息 trident: u.indexOf('Trident') > -1, //IE內(nèi)核 presto: u.indexOf('Presto') > -1, //opera內(nèi)核 webKit: u.indexOf('AppleWebKit') > -1, //蘋果、谷歌內(nèi)核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐內(nèi)核 mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否為移動(dòng)終端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios終端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android終端或者uc瀏覽器 iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否為iPhone或者QQHD瀏覽器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1 //是否web應(yīng)該程序,沒有頭部與底部 }; }(), language:(navigator.browserLanguage || navigator.language).toLowerCase() } if( browser.versions.android || browser.versions.iPhone || browser.versions.iPad){ window.location.href="http://daimami.com“ } }
通過(guò)navigator的platform來(lái)判斷
platform 屬性是一個(gè)只讀的字符串,聲明了運(yùn)行瀏覽器的操作系統(tǒng)和(或)硬件平臺(tái)。雖然該屬性沒有標(biāo)準(zhǔn)的值集合,但它有些常用值,比如 "Win32"、"MacPPC" 以及 "Linuxi586",等等。
<!-- //平臺(tái)、設(shè)備和操作系統(tǒng) var system ={ win : false, mac : false, xll : false //X11也叫做X Window系統(tǒng),X Window系統(tǒng) (X11或X)是一種 位圖 顯示的 視窗系統(tǒng) 。它是在 Unix 和 類Unix 操作系統(tǒng) ,以及 OpenVMS 上建立圖形用戶界面 的標(biāo)準(zhǔn)工具包和協(xié)議,并可用于幾乎所有已有的現(xiàn)代操作系統(tǒng)。 }; //檢測(cè)平臺(tái) var p = navigator.platform; alert(p); system.win = p.indexOf("Win") == 0; system.mac = p.indexOf("Mac") == 0; system.x11 = (p == "X11") || (p.indexOf("Linux") == 0); //跳轉(zhuǎn)語(yǔ)句 if(system.win||system.mac||system.xll){ //轉(zhuǎn)向電腦端 window.location.href="www.daimami.com"; }else{ window.location.href="www.daimami.com"; //轉(zhuǎn)向手機(jī)端}
以上就是Javascript document.referrer判斷訪客來(lái)源網(wǎng)址的詳細(xì)內(nèi)容,更多關(guān)于Javascript document.referrer的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
IE瀏覽器不支持getElementsByClassName的解決方法
這篇文章主要介紹了IE瀏覽器不支持getElementsByClassName的解決方法,本文的方法比較完美的解決了這個(gè)問(wèn)題,需要的朋友可以參考下2014-08-08javascript保留兩位小數(shù)的實(shí)現(xiàn)方法你了解嗎
這篇文章主要為大家介紹了javascript保留兩位小數(shù)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01JavaScript 一行代碼,輕松搞定浮動(dòng)快捷留言-V2升級(jí)版
前天熬了大半宿發(fā)了一篇[一行代碼輕松搞定快捷留言功能],同時(shí)發(fā)布了V1.0beta版的快捷留言功能和源代碼,之所以是beta版,就是當(dāng)時(shí)感覺雖然基本功能有了,但是還不夠完善,特性也不一定合理2010-04-04javascript canvas API內(nèi)容整理
在本篇文章里小編給大家分享的是關(guān)于javascript canvas API內(nèi)容整理,有需要的朋友們可以跟著學(xué)習(xí)參考下。2020-02-02javascript前端埋點(diǎn)上報(bào)的幾種方式
本文將介紹前端埋點(diǎn)上報(bào)的幾種常見方式,并詳細(xì)闡述如何在項(xiàng)目中運(yùn)用這些方式進(jìn)行數(shù)據(jù)上報(bào),以幫助開發(fā)者更好地進(jìn)行數(shù)據(jù)收集和分析,感興趣的可以了解一下2023-11-11js+cavans實(shí)現(xiàn)圖片滑塊驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了js+cavans實(shí)現(xiàn)圖片滑塊驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09