我有一个电子商务感谢页面,它向Google Analytics发送了一个ecommerce.js点击
<script>
try{ga('require', 'ecommerce', 'ecommerce.js');
ga('ecommerce:addTransaction', {
'id': '082918-074143-128'
, 'affiliation': ''
, 'revenue': '2.09'
, 'shipping': '0.00'
, 'tax': '0.17'
});ga('ecommerce:addItem',{
'id': '082918-074143-128'
, 'sku': ''
, 'name': 'Cane Creek 1-1/8-inch Headset Shim Spacer .25mm'
, 'category': 'Bicycling Catalog > Components > Headsets'
, 'price': '1.08'
, 'quantity': '1'
});
ga('ecommerce:addItem',{
'id': '082918-074143-128'
, 'sku': ''
, 'name': 'Race Face X-Type BB Outer Race Seal Gray'
, 'category': 'Bicycling Catalog > Components > Other > Other'
, 'price': '0.84'
, 'quantity': '1'
}); ga('ecommerce:send');}catch(err){}
</script>
我想在通过删除第一行和最后一行将数据发送到GA之前更改此脚本,以及通过将字符串'ga('
更改为'ga1('
来更改代码,以便代码不会向GA发送数据。所以我可以改为发送增强型电子商务热门。
我在页面上插入了更高的以下脚本,以便编辑页面下方的标记,但在标记触发之前无法编辑标记。
我试过这个:
<script>
document.addEventListener("DOMContentLoaded", function(event) {
function contains(selector, text) {
var elements = document.querySelectorAll(selector);
return [].filter.call(elements, function(element){
return RegExp(text).test(element.textContent);
});
}
function bsHit() {
gaHit = contains('script', /try\{ga\(/g);
var hit = gaHit[0].innerHTML;
var tryer = "try{ga('require', 'ecommerce', 'ecommerce.js')\;";
var hit = hit.replace(tryer, "");
lastLine = "ga('ecommerce:send');}catch(err){}";
hit = hit.replace(lastLine, "");
hit = hit.replace(/ga\(/g,"ga1\(");
console.log(hit);
}
bsHit();
}
</script>
在代码中我需要/修改什么来实现它?
我感谢您的时间和见解。
请尝试下面的代码。我不完全理解你的'包含'功能正在做什么,所以我无法保证这一点。在任何情况下,如果您使用GA调试器chrome扩展,您应该能够在自动生成的代码之前查看代码是否执行,并从那里进行故障排除。
<script>
(function() { //this wraps your sript in an IIFE, which will execute as soon as it's parsed
function contains(selector, text) {
var elements = document.querySelectorAll(selector);
return [].filter.call(elements, function(element) {
return RegExp(text).test(element.textContent);
});
}
function bsHit() {
var gaHit = contains('script', /try\{ga\(/g);
var hit = gaHit[0].innerHTML;
hit = hit.replace("ga('ecommerce:send')", "");
gaHit[0].innerHTML = hit; //var hit is just a string - you need to rewrite the script element
console.log("Replaced script content:\n" + hit); //added string so it will show up on console even if 'hit' is null
}
bsHit();
})();
</script>
你能暂时用其他东西来存储ga函数吗?
window.ga1 = window.ga;
window.ga = function(){};
setTimeout(function(){ window.ga = window.ga1; }, 3000);