Javascript 推送到数据层中未出现的数据层
我有一门活动课Javascript 推送到数据层中未出现的数据层,javascript,drupal,google-analytics,google-tag-manager,Javascript,Drupal,Google Analytics,Google Tag Manager,我有一门活动课 /** Class representing a Google Analytics Event. */ class AnalyticsEventInterface { event = {}; getEvent() { return this.event; } } class SearchClickEvent extends AnalyticsEventInterface { /** * Create a SearchResultClick ana
/** Class representing a Google Analytics Event. */
class AnalyticsEventInterface {
event = {};
getEvent() {
return this.event;
}
}
class SearchClickEvent extends AnalyticsEventInterface {
/**
* Create a SearchResultClick analytics event.
* @param {string} term - The search result's landing query term.
* @param {string} type - The type of search result's landing with.
* @param {int} page - The page number of the result clicked.
* @param {int} position - The calculated position of the result clicked.
*/
constructor(term, type, page, position) {
super();
this.event.event = 'search_result_click';
this.event.search_term = term;
this.event.search_type = type;
this.event.search_page = page;
this.event.search_position = position;
}
}
以及扩展events类的特定事件
/** Class representing a Google Analytics Event. */
class AnalyticsEventInterface {
event = {};
getEvent() {
return this.event;
}
}
class SearchClickEvent extends AnalyticsEventInterface {
/**
* Create a SearchResultClick analytics event.
* @param {string} term - The search result's landing query term.
* @param {string} type - The type of search result's landing with.
* @param {int} page - The page number of the result clicked.
* @param {int} position - The calculated position of the result clicked.
*/
constructor(term, type, page, position) {
super();
this.event.event = 'search_result_click';
this.event.search_term = term;
this.event.search_type = type;
this.event.search_page = page;
this.event.search_position = position;
}
}
当单击事件发生时触发
(function ($) {
'use strict';
Drupal.behaviors.search_landing_page = function (context) {
//When a search result is clicked a google analytics event is triggered and data collected.
var logSearchClick = function (event) {
var analyticsSettings = null;
if (typeof Drupal !== "undefined" && typeof Drupal.settings !== "undefined" && typeof Drupal.settings.analytics !== "undefined") {
analyticsSettings = Drupal.settings.analytics;
}
if (analyticsSettings === null) {
// Escape early if we don't have the info that we need.
return;
}
var queryTerm = analyticsSettings.term || null;
var searchType = analyticsSettings.type || null;
var pageNumber = analyticsSettings.page || null;
var $results = $('.c-search-result');
var resultsPerPage = $results.length;
var positionData = $results.data('position');
var positionID = positionData + ((pageNumber - 1) * resultsPerPage);
var searchClickEvent = new SearchClickEvent(queryTerm, searchType, pageNumber, positionID);
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(searchClickEvent.getEvent())
}
// Attach the function to the event.
$('.c-search-result').off('click').on('click', logSearchClick);
};
})(jQuery);
通过调试,所有的行都被调用,事件看起来像是被推送的,但是当我在控制台中单击搜索结果后检查数据层时,新事件不在数据层中。任何帮助都将不胜感激。我也没有访问客户端GTM的权限。您能分享一下“searchClickEvent.getEvent()”函数返回的控制台吗?searchClickEvent.getEvent();我获取未捕获的引用错误:未定义searchClickEvent和dataLayer.push({'event':'event'});我没有定义,但是我可以在调试器中跟随代码