我正在使用Google Optimize运行一些A / B测试,并试图仅从我的应用程序更新dataLayer中的值,但没有更新它,而是只是向其中添加了一个新对象。根据文档,如果密钥已经存在,应该更新。
我想念什么吗?
例如:
// initiate dataLayer at the top of <head>
window.dataLayer = [{
message: ""
}];
// later after some stuff loaded
window.dataLayer.push({message: 'Test message'});
console.log(window.dataLayer) // added instead of updated
// [
// {message: ""},
// {message: "test"}
// ]
答案 0 :(得分:0)
简而言之,感谢@IskandarRezaRazali的评论,它可以正常工作,但是我应该一直在使用private void File_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
// File dir
Console.WriteLine(files[0].ToString());
// Get mouse coords
Point mouse = PointToScreen(e.GetPosition(this));
Point pt = Mouse.GetPosition(worldMap);
Point adjustedPt = new Point();
adjustedPt.X = pt.X + mouse.X;
adjustedPt.Y = pt.Y + mouse.Y;
Location dropLoc = worldMap.ViewportPointToLocation(adjustedPt);
GeoPushpin newPin = new GeoPushpin();
newPin.Location = dropLoc;
worldMap.Children.Add(newPin);
}
}
(它将始终为您提供最新条目)来检索值,而不是尝试通过索引访问它或必须执行Array.find`。
答案 1 :(得分:0)
史蒂文,
好像您错过了声明中单引号的使用。 Google在文档中说
dataLayer.push({new-variable: 'value'}); // Won't work
代替
dataLayer.push({'new-variable': 'value'}); // Better
查看下面的代码
<script>
dataLayer = [];
dataLayer.push({'message' : 'Test message'});
</script>
您可以在此处阅读文档-https://developers.google.com/tag-manager/devguide