2012-04-25 28 views
10

私は参照元URLからドメインを取得したいと思います。私は上記のようなリファラURLを取得Whenver私は主に、私はちょうどドメインの例を取得するためにhttp://www.davidj.com/pages/flyer.asp & http://www.ronniej.com/linkdes.com/?adv=267&loc=897javascript - document.referrerからのみドメインを取得

を望んされますリファラのURL:http://www.davidj.com

私は.splitメソッドを使用して試してみましたが、私は問題を抱えていますそれを使って。

答えて

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.match(/:\/\ /(。[^ /] +)/)[1];次のエラーメッセージが表示されます。 ** nullです** – Stephen

+0

私はこれを使用しています: var url = unescape(document.referrer); var ref = url.match(/:\/\ /(。[^ /] +)/)[1]; – Stephen

+0

'document.referrer'が' undefined'で一致するURLがないので 'if(document.referrer) 'が" undefined "でないことを確認してからこのコードを実行してください。 – undefined

4

チェーン分割、スライスと参加:

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

あなたは内部的には、のように、その後はるかに容易であるアンカー要素へのURLを書いて、その1から小さな部分

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

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

を取得し使用することができます分割などに気にする必要はありません...それはまったく論理的です...ネイティブアンカーは少なくともURLに関してはwindow.locationのような同じプロパティを持っています

EDIT:IE 6-9 http://www.davidj.com:80

+1

IEは 'anchor.host'はなく、へ' location.host'にポートを追加するように見えるん。ポートが不要な場合は、代わりに 'anchor.hostname'と' location.hostname'を使うことができます。 –

+0

共有のためにありがとう –

0

あなたは正規表現を使用することができます」// anchor.hostするデフォルトのポートを追加します:

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") { 
    //................ 
}        
関連する問題