ขออภัยครับเมื่อวานรีบไปหน่อยเลยไม่ได้อธิบาย วันนี้เลยมาตอบให้ละเอียดขึ้นนะครับ
1. ที่กด link แล้วไม่เปิด tab ใหม่แม้จะใส่ _blank แล้วเพราะ
onclick="trackOutboundLink('http://www.example.com '); return false;" ครับ
อธิบายการทำงานคือเรียก trackOutboundLink() แล้ว return = จบ event click ที่ทำอยู่ครับ
ซึ่งถ้าแก้เป็นแบบนี้ก็น่าจะเปิด tab ใหม่ตามที่ต้องการเหมือนกันครับ
<a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com');" target="_blank">
Text Link
</a>
2. จากข้อ 1 อาจจะมีคำถามว่า อ้าว จบ event แล้วทำไมยัง redirect ไป
http://www.example.com อีกล่ะ (แถมไม่เปิด tab ใหม่ให้อีก)
ลองมาดูที่ trackOutboundLink() กันนะครับ
<script>
var trackOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': function(){document.location = url;}
});
}
</script>
จะเห็นว่าตอนเรียก ga เราส่ง option
'hitCallback': function(){document.location = url;} ไป
อธิบายย่อๆคือ hitCallback จะทำงานหลังจากเรียก ga แล้ว จะให้ alert, redirect หรืออะไรก็ได้ครับ
* คำอธิบายแบบเต็มตามนี้เลยครับผม
https://developers.google.com/...js/field-reference#hitCallback ซึ่งจากโค้ด สิ่งที่เราให้มันทำก็คือ document.location = url; ครับ redirect ธรรมดานั่นเอง ผมจึงเสนอให้แก้เป็น window.open ซึ่งระบุ target ได้แทนครับ
ขอย้อนไปดูโค้ดของท่าน sputtaro นะครับ
echo '<span><a class="buybutton" rel="nofollow" onClick="ga('send','event','Link','Click',event.target.href);" href="'.$linkurl.'" target="_blank" title="'.ucwords($Key).'" >';
ผลที่ออกมาจะได้ประมาณนี้ครับ
<span><a class="buybutton" rel="nofollow"
onClick="ga('send','event','Link','Click',event.target.href);" href="'
http://www.example.com '"
target="_blank" title="title-na-kub" >
เทียบกับโค้ดในข้อ 1 จะเห็นว่าไม่มี return ใน onclick และใส่ target="_blank" เหมือนกันครับ ^^
ต่างกันที่ท่าน sputtaro เรียก ga เลย แต่เราไปเรียกใน function แยก และท่าน sputtaro ไม่ได้ส่ง option ไปครับ ซึ่งมันก็ optional อยู่แล้ว
สรุป เจอ 2 ทางออกครับ
1. วิธีเมื่อวาน ไม่ต้องแก้ <a>
<a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return false;">
Text Link
</a>
<script>
var trackOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': function(){window.open(url, '_blank');}
});
}
</script>
2. วิธีท่าน sputtaro เอา hitCallback ออกเลยก็ได้ครับ ไม่งั้นจะทั้งเปิด tab ใหม่และ redirect ใน tab ปัจจุบัน
<a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com');" target="_blank">
Text Link
</a>
<script>
var trackOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon'
});
}
</script>
... จบแล้ว ขอให้แก้ได้ไวๆ ปลอดภัยไม่มีบั๊กนะครับ ...
ปล. ผมลองเขียน html ขึ้นมาทดสอบแต่ไม่ได้ลองกับ ga ตรงๆนะครับ
ปล.1 ถ้าผิดพลาดประการใดขออภัยด้วยครับ