2012-04-25 320 views

回答

12
var url = "http://www.ronniej.com/linkdes.com/?adv=267&loc=897" 
var referrer = url.match(/:\/\/(.[^/]+)/)[1]; 

http://jsfiddle.net/hyjcD/

if (document.referrer) { 
    url = document.referrer; 
    ref = url.match(/:\/\/(.[^/]+)/)[1]; 
} 
+0

@Reminson感谢这..它的作品,但我有一个问题..我已经把代码放在我的域名使用.js文件,基本上它被加载到所有页面上。唯一的问题是这个。每当我直接访问一个页面(没有引用URL)时,我得到以下错误:url.match(/:\/\ /(。[^ /] +)/)[1]; **为空** – Stephen 2012-04-25 15:00:33

+0

我使用的是: var url = unescape(document.referrer); var ref = url.match(/:\/\ /(。[^ /] +)/)[1]; – Stephen 2012-04-25 15:04:11

+0

这是因为'document.referrer'是'undefined',并且没有匹配的url,你应该检查if(document.referrer)是不是“undefined”,然后执行这段代码。 – undefined 2012-04-25 15:05:00

4

链分割,切片和加入:

document.referrer.split("/").slice(0,3).join("/") 
8

您可以在内部使用的URL写入定位元素,并从一个拿到小部分

var anchor = document.createElement("a"); 
anchor.href = "http://www.davidj.com/pages/flyer.asp"; 

console.log(anchor.protocol + "//" + anchor.host); // "http://www.davidj.com" 

要容易得多然后根据你不必关心分裂或类似的东西......这是非常合乎逻辑的...本地锚点具有相同的属性,如window.location至少关于URL

编辑:IE 6-9添加默认端口anchor.host //“http://www.davidj.com:80

+1

IE浏览器出现在端口添加到'anchor.host',而不是'location.host'。如果您不需要端口,则可以使用'anchor.hostname'和'location.hostname'。 – 2012-08-23 15:43:23

+0

感谢分享 – 2012-08-23 18:34:26

0

你可以使用正则表达式:

var matchHost = /^https?:\/\/.*\//; 

var match = matchHost.exec('http://www.davidj.com/pages/flyer.asp'); 
if(match) { 
    var host = match[0]; 
    console.log(host); 
} 
0
if (document.referrer.split('/')[2] == "domain") { 
    //................ 
}