3

概要: 1. サード パーティからの調査を表示するには、新しいウィンドウを開く必要があります。
2. JavaScript を使用してウィンドウを開くことはできません (現在は target="_blank" を使用しています)。 3. クリックを追跡するには JavaScript を使用する必要があります (現在は onclick を使用しています)。

新しいウィンドウでサードパーティの調査を開始しようとしている 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では機能しませんでした。Chrome でセキュリティ上の問題が発生しました。あるドメインをロードするフレーム (新しいウィンドウ) にアクセスしようとする「安全でない JavaScript の試み」のようなものですが、そのオリジンは別のドメインです。私の解決策は、次のように 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>

...または、同じアンカータグで target と onclick を使用するだけの問題である場合。何かご意見は?

私は他の場所で調査し、Stack Overflow で以下の結果を見つけましたが、この状況に対処するものはありませんでした。例えば):

「return false」の削除をテストできたので、これはある意味で役に立ちました。これは、「user1223427」の場合と同じ結果になりました.2つの異なるウィンドウで同じページをレンダリングしました. ターゲット URL を開くには JavaScript 以外の方法が必要だったため (上記のセキュリティ上の問題により)、これは役に立ちませんでした。 Google アナリティクスの OnClick とターゲット _blank。リンクが機能しませんか?

私はJQueryを使用しておらず、JQueryソリューションと私の状況との関係を理解し​​ていないため、これは役に立ちません _blankを含むonclickを選択します

これは、トラッキング コードを動作させる場合にのみ適用され、新しいウィンドウを開く場合の問題ではありません: Google アナリティクス - クリック トラッキングのダウンロード

これは良い結果になると思っていましたが、解決策はJSです。 Google アナリティクスの新しいウィンドウでリンクを開くと、外部リンク トラッキングにバグが発生しますか?

4

1 に答える 1

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 から return false を削除すると、リンクが意図したとおりに動作することがわかります。

document.location の代わりに window.open を呼び出すように setTimeout 関数を変更することもできます。

于 2012-04-06T20:49:51.693 に答える