diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue index 5e4ce20..d577619 100644 --- a/src/components/HelloWorld.vue +++ b/src/components/HelloWorld.vue @@ -18,6 +18,38 @@ export default { return { spmText: 'xx.xx.xx' } + }, + mounted() { + // 理论上相关代码都应该在单独的sdk js文件内部,但是由于测试用例demo期望结果在和vue的data数据对比, + // 需要设置vue组件的data所以代码先放在了组件生命周期了 + + function findSpmAttr(dataset = {}) { + for(let key in dataset) { + if (key.startsWith('spm')) { + return key; + } + } + } + + document.body.addEventListener('click', (e) => { + let node = e.target; + let spmAttr = findSpmAttr(node.dataset); + + if (node && spmAttr) { + let logDataArr = []; + logDataArr.unshift(node.dataset[spmAttr]); + while (node && node.parentNode && node.parentNode.nodeName.toUpperCase() !== 'BODY') { + node = node.parentNode; + let dataset = node.dataset; + spmAttr = findSpmAttr(dataset); + if (spmAttr) { + logDataArr.unshift(node.dataset[spmAttr]); + } + } + + this.spmText = logDataArr.join('.'); + } + }, false) } }