リファラー 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 メソッドを使用してみましたが、使用に問題があります。
リファラー 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 メソッドを使用してみましたが、使用に問題があります。
var url = "http://www.ronniej.com/linkdes.com/?adv=267&loc=897"
var referrer = url.match(/:\/\/(.[^/]+)/)[1];
if (document.referrer) {
url = document.referrer;
ref = url.match(/:\/\/(.[^/]+)/)[1];
}
内部的に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
チェーンの分割、スライス、および結合:
document.referrer.split("/").slice(0,3).join("/")
正規表現を使用できます:
var matchHost = /^https?:\/\/.*\//;
var match = matchHost.exec('http://www.davidj.com/pages/flyer.asp');
if(match) {
var host = match[0];
console.log(host);
}
if (document.referrer.split('/')[2] == "domain") {
//................
}