2011-08-12 5 views
0

サイトのホームページに動画を追加しています。#videoタグが見つかるたびに自動的にビデオをライトボックス形式のコンテナに表示したいURLに存在している:リンクはサイト上で内部的にクリックされた場合Javascript - ハッシュをチェックして、アナリティクスコードを無視する

http://www.domain.com#video

ビデオがポップアップする必要があります(例:<a href="#video">)ともハッシュは、ページの読み込みのURLに存在している場合。

window.location.hashを使用してURLのハッシュをチェックするか、ハッシュとのリンクをクリックして関連付けられたjavascript機能を起動するのに十分簡単です。それは何の問題もなく期待どおりに働いています。分析コードはそれぞれに変化しますので

http://www.domain.com#video?utm_source=...

:このURLは自動的に追加Google Analyticsのコードを電子メールで送信されますようしかし、Analyticsのコードは、URLの末尾に追加され

電子メールキャンペーンでは、単純なJavaScriptのreplace()を実行して解析コードを無視することはできません。

ハッシュがURLに存在するかどうかを確認するにはどうすればよいですか?存在する場合?

答えて

0

クエリパラメータの後ろにハッシュを付けるための適切な形式ではありませんか?次に、location.hash変数が正しく動作し、特別なコードは必要ありません。あなたのURLは次のようになり、その後、あなただけの直接#videoされるlocation.hashを使用することができます。

http://www.domain.com?utm_source=xxx#video

私は解決策としてこれを助言するものではありません(私はあなたがURLが法的に固定しますするべきだと思います)、しかし、あなたはそれが違法な位置にいても、URLのうち、ハッシュ値を解析するために、このコードを使用することができます:「?」

var matches = window.location.href.match(/#(.*?)(\?|$)/); 
if (matches) { 
    var hash = matches[1]; 
} 

このコードは、文字列の末尾かのどちらかに「#」から抽出し、いずれか早い方。ここには一連のテストURL(http://jsfiddle.net/jfriend00/HuqL7/)が表示されています。

+0

しかし、分析コードは電子メールソフトウェアによってすべてのURLに自動的に追加されるため、実際は自分の管理下にはありません。 – adnrw

+0

それが間違って追加された場合、それはうまくいくと思っています。私はあなたがそれをソースで修正する必要があると思います。 – jfriend00

+0

@adnrw - ハッシュ値を取得するために正当なURLと不正なURLの両方を解析するwindow.location.hashオブジェクトの動作に依存しないコードを自分の答えに追加しました。 – jfriend00

0
location.hash.match(/[^?]*/) 

ハッシュが常に最初であると仮定すると、それが実行されるはずです。

0

(これは、あなたの質問にリテラルの答えですが、巨大なcaveateがある)技術的には、あなただけのテストすることができます:

var h = window.location.hash; 
var ind = h.indexOf('?'); 
var test = ind <0?h:h.substr(0, ind) 

は、Google Analyticsで仕事をしたい場合は、問題#を有することができます。ルールは、#の後のすべてがサーバーに送信されないということです。つまり、アナリティクスがウィンドウ外に出る可能性があります。ハッシュがGoogleのすべてのものの後に追加されることを確認する必要があります。そうであれば、何かをテストすることについて心配する必要はありません。

+0

私はそれを知らなかった。上記のように、分析コードは電子メールソフトウェアによって自動的に追加されるため、私ができることはあまりありません。 – adnrw

関連する問題