我想更好地了解优化api的工作原理。我是新手。如果我问一些非常明显的事情,请原谅。
但我认为API的工作原理是使用一个带有两个方法get和push的优化对象,以及一个数据对象。但后来我在优化网站上看到了这个代码,似乎是将他的变量窗口[优化]分配给数组[]。不应该是{}而不是[ ] 即可。请帮忙
var activated = function(event) {
// The Optimizely snippet has been activated.
var visitorId = window.optimizely.get('visitor_id').randomId;
console.log("The visitor ID is: " + visitorId);
};
window["optimizely"] = window["optimizely"] || [];
// SHOULDN"T THE ABOVE BE **window["optimizely"] = window["optimizely"] || {}
window["optimizely"].push({
type: "addListener",
filter: {
type: "lifecycle",
name: "activated"
},
// Add the activated function as a handler.
handler: activated
});
window["optimizely"].push(['trackEvent', 'watchedVideo']);
答案 0 :(得分:4)
(以下是指Optimizely X片段JS API。)
对于那些寻求与Optimizely代码段API进行交互的人,请记住以下两个执行阶段:
<script>
中都有<head>
标记,并且它是同步评估的。在这种情况下,script
标记上方出现的所有JS代码都是此阶段的代码。script
标记以下的所有内容。尼特:这实际上是一种简化;在初始化生命周期钩子之前,JS API实际上稍早可用。在某些情况下,在Optimizely初始化之前(即,在上面的阶段1期间),人们想要“预推”或排队调用API。那时,您可以编写JS,将window.optimizely
设置为API调用数组(每个调用都是一个对象)。
在初始评估期间,Optimizely代码段会消耗window.optimizely
数组中存在的任何预推送API调用(如果存在),然后将window.optimizely
分配给具有{{1}的对象在整个文档中记录的函数。因此,初始化后评估的代码应该与初始化的API get
进行交互。
值得强调的是,在两个阶段进行API调用的方法在表面上彼此相似:pre-init选项是一个数组,因此有一个optimizely.get(...)
方法;初始化后的API对象具有push
方法。它们都采用相同的参数:定义API调用的对象。
在您给出的示例中,向push
生命周期钩子注册的API调用被预先推送到activated
预推送API调用数组。当浏览器评估该片段时,它将执行任何此类调用。
如果有意义,请告诉我!
来源:我在拥有该代码段的团队中使用Optimizely。