是否可以有效地监视纯JavaScript 中dataLayer的变化?每当被称为dataLayer.push函数时,我需要了解有关添加和检查已添加到dataLayer的事件的信息。我找不到任何解决方案。我需要 angularJS 中的$watch
之类的东西,您可以在其中观察任何对象的变化,但是在我提到的此脚本中,我只能使用简单的 JS 。一秒间隔的无限循环不是一个好的解决方案:)
感谢您的提示,技巧或建议。
我需要这样的想法:
function callback() {
// do the stuff with dataLayer
}
watch(window.dataLayer, callback);
window.dataLayer.push({event: 'any event', data: 'any data'});
window.dataLayer.push({event: 'any second event', data: 'any second data'});
答案 0 :(得分:1)
您可以重新定义dataLayer.push函数,并将其与JS中的自定义事件结合:https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
示例:
var x = dataLayer.push; //make x equal to current datalayer function
dataLayer.push = function (myobj){
x(myobj);//call current function
alert('my event dispatch');//event dispatch code goes here
}