• ベストアンサー

yuga.js 外部リンクは別ウインドウを設定

yuga.jsの外部リンクは別ウインドウを設定で、onclick属性をjs側に付与したいのですが、設置方法が判りません有志の方の助言お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

$("a").click(function(){ (this.href,'pageTracker._link'); return false; }); では、解析されていないと思います。 【googleanalytics】よく知りませんが、解析したいリンク先に、 <a href="" onclick="pageTracker._link(this.href); return false;></a> とセットするのであれば、これはリンク動作を殺して、 pageTracker._link()にその<a>要素に指定しているhref属性の値を渡している わけですから、ページ内全部の<a>要素についてセットしたいなら、 $("a").click(function(){ pageTracker._link($(this).get(0).href); }); じゃないでしょうか、return false;はyuga.jsで定義される  $("a").click(function(){ の最後で、発行されてるのでここにはなくてもよいと思います。

chapital2005
質問者

お礼

ありがとうございます。 ご丁寧に教えて頂いて、今まで、ググって調べてもヒントらしきものすら判断が付かなかったので、大助かりです。感謝感謝。

その他の回答 (2)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

訂正します。  jQueryの .$click(fn) はコールバック関数fnでfalseを返すと、 元々の動作をキャンセルした上で、イベントのバブリングも 止めると書いてありました。 従ってNo.1の回答はだめです。IE以外ならキャプチャリングフェーズで イベントを拾えます。また、.$click(fn)は、何度でも使えます。 付与されるclass属性をonclickに変更するものだと・・・ =>yuga.jsで、class属性をonclickに変更しても、onclickという名前の クラスが、クリックした<a>要素に付加されるだけなので、何もおこりません。 CSSで .onclick {color:red;} とか定義してあれば文字色が赤になりますが、、 クリック時に何をされたいのかわかりませんが、 <div> <a href="index.html" onclick="alert('hoge');">link</a> </div> <script type="text/javascript"> <!-- $(function(){  $("a").click(function(){   window.open(this.href,"_blank");   return false;  });  $("a").click(function(){   alert("fuga");  });  if('undefined' !== typeof document.addEventListener){   document.addEventListener('click',func,true);  } else if ('undefined' !== typeof document.attachEvent){   document.attachEvent('onclick',func);  }  function func(event){   var target = event.target || event.srcElement;   if(target.nodeName == "A"){    alert("リンクがクリックされた。");   }  } }); // --> </script> となっていれば、 まず ”リンクがクリックされた。”とアラートし、(IEは検出しない) 次に、 ”hoge”とアラートし、 次に、index.html を別窓で開き、 最後に、”fuga”とアラートします。 お解りになるでしょうか?

chapital2005
質問者

お礼

yyr446様ありがとうございます。 onclick属性を使いたかったのは、googleanalyticsで複数のドメイン解析を設置する為、外部リンク全てに貼りたかった為です。ご丁寧に質問をする意図を汲み取って頂き、onclick属性のコードを書いて頂けたのは非常に助かります。 教えて頂いた、コードを参考に、以下のようにyuga.jsに追加しました。 (yuga.js 外部リンクは別ウインドウを設定 fanction内) $("a").click(function(){ (this.href,'pageTracker._link'); return false; }); ※アラートで、確認【firefoxでクリック時にfugaと表示】してjsの変更【 alert("fuga"); → (this.href,'pageTracker._link'); return false; 】しましたが、ソース上では、onclickと表示されていないので、解析されているか、数日様子を見てみようと思います。 【googleanalytics】 http://www.google.com/support/analytics/bin/answer.py?hl=jp&answer=55503 【googleanalyticsのonclick属性】 onclick="pageTracker._link(this.href); return false;

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

jQuery詳しく知りませんが、onclick属性で関数を指定すると、 バッテイングしてしまうんじゃないかと... yuga.jsの$.clickのfunction(){}は、return false;で <a>のリンク動作を無効にしてるだけで、 stopPropagation() もcancelBubbleもしていないみたいだ。 よって、ルート(document)でバブリングされるclickイベントを 監視して関数をセットすればよいのではないかと思う。  if('undefined' !== typeof document.addEventListener){   document.addEventListener('click',func, false);  } else if ('undefined' !== typeof document.attachEvent){   document.attachEvent('onclick',func);  }  function func(event){   var target = event.target || event.srcElement;   if(target.nodeName == "A"){    alert("リンクがクリックされた。");   }  }

chapital2005
質問者

お礼

onclick属性をブラウザで確認しているのですが、どうやら内部リンクでjsがバッティングしているようです。 <a href="#header">上へ戻る</a> この内部のa要素の処理はどのようにすればよいかわかりますか?

chapital2005
質問者

補足

解答ありがとうございます。 >ルート(document)でバブリングされるclickイベントを監視して関数をセットすればよいのではないかと思う。 すいません。解答のレベルが高すぎて、???理解不能です。もう少し噛み砕いて頂けると、助かります。 付与されるclass属性をonclickに変更するものだと思っていました・・・。(゜д゜;)

関連するQ&A