我想使用dataLayer.push发送一些事件。 这是我尝试的:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
dataLayer = [];
ga_data = JSON.parse('{{ga_data|safe}}');
ga_data.eventCategory = 'Test Event Callback';
ga_data.eventCallback = function () {
var href = "{{ href }}";
if((href.substring(0, 4) !== 'http') && (href.substring(0, 2) !== '//'))href = '//' + href;
alert('sdf');
window.location = href;
}
dataLayer.push(ga_data);
</script>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','some id');</script>
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=some-id" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
</body>
</html>
&#13;
所以我想在发送事件后触发回调。 首先,我从json获得了一些已经设置了eventAction,eventLabel和eventCategory的ga_data对象。
然后我尝试将eventCallback附加到我的ga_data并将其推送到dataLayer。
但似乎eventCallback根本不会发射。
编辑: JSON.parse中的ga_data返回有效的json。如果我在将它推送到dataLayer之前尝试console.log ga_data,我会得到这个:
{eventCategory: "Test Event Callback", eventAction: "SINN", eventCallback: ƒ}
&#13;