2012-04-06 22 views
3

概要: 1.サードパーティからのアンケートを表示するには、新しいウィンドウを開く必要があります。
2.(現在のターゲット=「_空白」を使用してウィンドウを開くためにJavaScriptを使用することはできません。 3.(現在)のonclick使用してクリック数を追跡するためにJavaScriptを使用する必要があります。 4.元のウィンドウには、クリック時にその内容を変更しないでください。onclickでtarget = "_ blank"を使用すると、新しいウィンドウが開かない

は私が新しいウィンドウでサードパーティの調査を起動しようとしているJSPを持っている本来、コードはこのような新しいウィンドウを起動した。

<a id="customer_survey_button" href="#" target="_blank" onclick="recordOutboundLink(this, 'Outbound Links', 'blah.com');openChildWindow('http://www.blah.com/f.asp?etcetera','TAKE SURVEY');return false;" class="genbut">TAKE SURVEY</a> 

それはクロームFFで働いていたではなく、それを引き起こしました。 Chromeにセキュリティ上の問題がありました。「安全ではないJavaScriptが、1つのドメインを読み込むフレーム(新しいウィンドウ)にアクセスしようとしましたが、元のnは別のドメインです。私のソリューションは、このように、HTMLを使用してウィンドウを開きました:

<a id="customer_survey_button" href="http://www.blah.com/f.asp?etcetera" target="_blank" onclick="recordOutboundLink(this, 'Outbound Links', 'blah.com');return false;" class="genbut">Take Survey</a> 

問題があり、それが新しいウィンドウで開かれていません。デバッグ中に、私は上記のコードからonclickを削除し、新しいウィンドウで開きます。それはJSコードで何か間違っている場合、私は...

<script type="text/javascript"> 
<!-- 
var pageTracker = _gat._getTracker("<%=googleTrackerId%>"); 
pageTracker._initData(); 
pageTracker._trackPageview(); 

function recordOutboundLink(link, category, action) { 
    try {  
    pageTracker._trackEvent(category, action); 
    setTimeout('document.location = "' + link.href + '"', 100) 
    }catch(err){} 
} 
// --> 
</script> 

わからないんだけど...またはそれはちょうど同じアンカータグにターゲットとonclickのを使用しての問題である場合。何かご意見は?

私は他の場所で、スタックオーバーフローについて調査しましたが、以下の結果が見つかりましたが、この状況に対処していないようです。例:

これは、「返品偽」の削除をテストすることができたため、一方的に役立ちました。これは "user1223427"と同じ結果をもたらしました。同じページを2つの異なるウィンドウに表示しました。 (言及されたセキュリティ問題のために)私はターゲットURLを開くためにJavaScript以外の方法が必要なので、役に立たなかった。 OnClick for google analytics and target _blank. The link does not work?

私はjQueryのを使用していないので、この1つは、助けにはならないと私はjQueryのソリューションと私の状況との間の接続を理解していない。これはのみ動作するようにトラッキングコードを取得するに適用されます select onclick that contains _blank

Google Analytics - Download clicks tracking

これは良い結果が出ると思っていましたが、解決策はJSです。

答えて

4

recordOutboundLink関数がリンクを開いています。

//This is changing the URL to the href of the link you clicked  
setTimeout('document.location = "' + link.href + '"', 100) 

2番目の例では、onclickイベントからfalseが返されます。これにより、アンカータグが正常に動作しなくなります。

setTimeout行をコメントアウトし、onclickからfalseを戻すと、リンクは必要に応じて動作するはずです。

また、window.openの代わりにはdocument.location

+0

はコメントアウトして働いていたリターン偽の除去呼び出すためにsetTimeout関数を修正することができます!今は、setTimeoutのコメントにどのような影響があるかを知る必要があります(この関数はすべて呼び出されているので、このアンケートボタン用に特定の関数を作成する必要があります)。 – ckpop

+0

また、別の関数(recordOutboundLinkOpenWindow)を作成し、行全体をコメントアウトする代わりに、document.locationをwindow.openに置き換えるようにsetTimeoutを変更しました。それは完璧に働いています。ありがとうございました!私は15の評判を欲しかったので、私はあなたの応答をバンプすることができました! – ckpop

+0

問題ありません。喜んで助けてください。 –

関連する問題