代码段可在控制台和Injector上运行,但不能通过Optimizely运行

时间:2020-02-25 03:01:50

标签: optimizely

有人经历过Optimizely忽略了部分代码吗?

因此,我的开发环境在chrome上使用了npm和注射器。 到目前为止,我的代码还不错。但是,当我将构建版本复制粘贴到Optimizely自定义JS时,只有其中的某些部分会被忽略。 特别是这部分,这使我考虑是否对Optimizely进行了代码限制,除了它不支持ES6。

// rebind events to the new cartactivator
$.each($._data($OldCartActivator[0], "events"), function () {
    // iterate registered handler of original
    $.each(this, function () {
        $CartActivator.bind(this.type, this.handler);
    });
});

我只说这部分,因为其余代码执行得很好。 我不明白为什么。

请赐教。

1 个答案:

答案 0 :(得分:1)

我设法使其正常工作!在所有事件绑定旧DOM之前执行上面的代码显然是时间问题。因此,我在等待复制之前使用了waitUntil,直到... oldcartactivator实际绑定了任何事件。

  utils.waitUntil(function(){
    return $._data($OldCartActivator[0], "events")!==undefined && $CartActivator ;
  }).then(function(){
    try{
                $.each($._data($OldCartActivator[0], "events"), function () {
              // iterate registered handler of original
              $.each(this, function () {
                $CartActivator.bind(this.type, this.handler);
              });
            }); 
    }catch(err){}

  });

如果您预计会在以后的很长时间内(但在限定时间内)附加多个事件,则轮询也将起作用。

希望这可以帮助同一条船上的某人。干杯〜