16

リファラー URL からドメインのみを取得したいと考えています。私が主に取得するリファラー URL はhttp://www.davidj.com/pages/flyer.asp&http://www.ronniej.com/linkdes.com/?adv=267&loc=897

上記のようなリファラー URL を取得するたびに、ドメインの例を取得したいだけです: http://www.davidj.com

.split メソッドを使用してみましたが、使用に問題があります。

4

7 に答える 7

19
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];
}
于 2012-04-25T13:50:27.483 に答える
10

内部的に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

于 2012-04-25T13:49:17.203 に答える
5

チェーンの分割、スライス、および結合:

document.referrer.split("/").slice(0,3).join("/")
于 2012-04-25T13:49:09.810 に答える
0

正規表現を使用できます:

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

var match = matchHost.exec('http://www.davidj.com/pages/flyer.asp');
if(match) {
    var host = match[0];
    console.log(host);
}
于 2012-04-25T13:51:04.360 に答える
0
if (document.referrer.split('/')[2] == "domain") {
    //................
}                              
于 2014-06-02T11:42:12.663 に答える