Несколько JS создали кнопки твиттера: отследить, какая из них была нажата?
У меня есть несколько кнопок (твит, публикация...) на странице, которые нужно отслеживать для аналитики. Я хочу знать, лучше ли кнопка A, чем кнопка B:)
Кнопки загружаются "по требованию": при наведении курсора на определенные элементы или через некоторое время. Я делаю это из соображений производительности. Я не хочу, чтобы весь DOM анализировался каждый раз.
Я использую функции twttr.widgets.createXXX из библиотеки виджетов Twitter, как описано здесь: https://dev.twitter.com/docs/intents/events.
Пока все работает хорошо
Но когда я связываю функции обратного вызова с указанными событиями, предоставляемые данные обратного вызова пустые или почти. У меня есть тип кнопки, но у меня нет никакой другой информации о событии и исходной цели.
Я заглянул внутрь объекта window.twttr, чтобы получить информацию относительно последнего события или различных созданных iframes.
Вот jsfiddle, который я сделал, чтобы объяснить проблему: http://jsfiddle.net/3fFFf/
<div id="btnContainer1" class="btn not-activated">Button container 1</div>
<div id="btnContainer2" class="btn not-activated">Button container 2</div>
<script>
// Loading the twitter library
twttr = (function (d,s,id) { var t, js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js=d.createElement(s); js.id=id; js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } }); }(document, "script", "twitter-wjs"));
twttr.ready(function(twttr) {
// I only want to load the tweet button when the divs are hovered
$(document).on("mouseenter", ".btn.not-activated", function(e){
var $div = $(this);
$div.removeClass("not-activated").text("");
twttr.widgets.createShareButton(
"http://twitter.com",
$div[0],
function(el) {}, // loaded callback
{ // Options
lang: "en",
text: "hey, share this great site !",
via: "me",
count: "none"
});
})
// A click occured on a twitter button
twttr.events.bind('click', function(e){
alert("e.target should by a node or something, but is : "+e.target)
});
});
</script>
Спасибо за помощь!