- ベストアンサー
yuga.js 外部リンクは別ウインドウを設定
yuga.jsの外部リンクは別ウインドウを設定で、onclick属性をjs側に付与したいのですが、設置方法が判りません有志の方の助言お願いします。
- みんなの回答 (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(){ の最後で、発行されてるのでここにはなくてもよいと思います。
その他の回答 (2)
- yyr446
- ベストアンサー率65% (870/1330)
訂正します。 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”とアラートします。 お解りになるでしょうか?
お礼
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)
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("リンクがクリックされた。"); } }
お礼
onclick属性をブラウザで確認しているのですが、どうやら内部リンクでjsがバッティングしているようです。 <a href="#header">上へ戻る</a> この内部のa要素の処理はどのようにすればよいかわかりますか?
補足
解答ありがとうございます。 >ルート(document)でバブリングされるclickイベントを監視して関数をセットすればよいのではないかと思う。 すいません。解答のレベルが高すぎて、???理解不能です。もう少し噛み砕いて頂けると、助かります。 付与されるclass属性をonclickに変更するものだと思っていました・・・。(゜д゜;)
お礼
ありがとうございます。 ご丁寧に教えて頂いて、今まで、ググって調べてもヒントらしきものすら判断が付かなかったので、大助かりです。感謝感謝。