Фрагмент кода работает на консоли и через Injector, но не через Optimizely - PullRequest
0 голосов
/ 25 февраля 2020

Кто-нибудь испытывал ту часть кода, которую Optimizely игнорирует?

Итак, моя среда разработки использовала npm и инжектор на chrome. Пока мой код работает красиво. Но когда я копировал и вставлял собранную версию в пользовательский 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 голосов
/ 25 февраля 2020

Мне удалось заставить его работать! Это, видимо, проблема синхронизации, когда приведенный выше код выполнялся до того, как какие-либо события связывают старый DOM. Поэтому я использовал waitUntil, чтобы подождать ... пока на старом cartactivator не будут на самом деле какие-либо события, связанные с ним, прежде чем пытаться реплицировать.

  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){}

  });

Опрос также будет работать, если вы ожидаете более одного события, которое будет прикреплен гораздо позже, но в течение ограниченного времени.

Надеюсь, это поможет кому-то в одной лодке. Приветствия ~

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...