Могу ли я использовать атрибуты данных в качестве селекторов для Mixpanel mixpanel.track_links?

Согласно документации Mixpanel по mixpanel.track_links, я могу передать селектор (например, они используют идентификатор), чтобы выбрать ссылку, которую я хочу отслеживать. Я передаю клиенту информацию об отслеживании и хочу знать, могу ли я использовать атрибут данных HTML5 в качестве селектора?

Таким образом, событие трека будет выглядеть так:

mixpanel.track_links("[data-blah='dude']", "Clicked Data Attribute");

Атрибуты данных HTML5 можно запрашивать с помощью document.querySelectorAll, хотя поддержка IE8 ‹ отсутствует.


person Blexy    schedule 04.09.2014    source источник


Ответы (3)


У меня была такая же проблема, и кажется, что вы не можете.

Вы можете легко попробовать, если сделаете что-то вроде:

mixpanel.track_links('#existing-id-on-page', '..') => true

функция вернет true, но если вы это сделаете:

mixpanel.track_links('#non-existing-id', '..') => undefined

функция вернет undefined, как и при использовании data-attributes.

Печально, что мы не можем использовать атрибуты данных, классы не созданы для нацеливания на элементы в JS...! В любом случае, надеюсь, я ответил на ваш вопрос!

person Nima Izadi    schedule 13.10.2014

Я создал код Javascript (с Jquery), который распознает атрибуты данных:

HTML: (Содержимое этого атрибута представляет собой строку JSON [EventName, Properties]. Внимание: он распознает только двойные кавычки)

<a href="mailto:[email protected]" data-mp-track='["Contact Click", {"Type" : "Email"}]'>Contact</a>

Javascript:

$('a[data-mp-track]').on('click', function(event) {
  var callback, mp_details, new_tab, properties, that;
  that = this;
  new_tab = event.which === 2 || event.metaKey || that.target === '_blank';
  callback = function() {
    if (new_tab) {
      return;
    }
    window.location = that.href;
  };
  mp_details = JSON.parse(that.getAttribute('data-mp-track'));
  if (!new_tab) {
    event.preventDefault();
    setTimeout(callback, 300);
  }
  properties = $.extend(mp_details[1], {
    'Page Title': document.title,
    'URL': window.location.pathname
  });
  mixpanel.track(mp_details[0], properties, callback);
});

Вдохновился этой публикацией.

person melalj    schedule 16.02.2015

У меня была похожая проблема. Необходимо использовать более продвинутый селектор атрибутов. Пока он работает с document.querySelectorAll, вы можете использовать его для добавления класса к этим ссылкам следующим образом:

document.querySelectorAll("[data-blah='dude']").forEach(function(foundlink) {
   foundlink.className += " blahdudelink";
});

И тогда работает обычный вызов mixpanel.track_links:

mixpanel.track_links(".blahdudelink", "blah dude link click");
person Harry Wood    schedule 22.06.2021