Dojo таинственно, настойчиво гасятся на странице - PullRequest
0 голосов
/ 11 декабря 2018

Мы используем фреймворк dojo на наших сайтах.Клиент вызвал панику, сказав, что его продажи от пользователей Microsoft Edge полностью упали.Я обнаружил, что в этом браузере переменная dojo периодически теряет значение после загрузки страницы.Поэтому, конечно, взаимодействие с этими пользователями не работает, поэтому, конечно, нет продаж.

Но в ходе тестирования я обнаружил эту удивительную вещь в devtools:

dojo variable refuses to be set to anything

Я даже не знаю, как бы я это сделал, если бы я хотел сделать это.Поэтому я хочу отследить это, но понятия не имею, что искать.Я мог бы заподозрить какой-то странный, повторяющийся код setInterval, но я бы не подумал, что он может попасть между двумя операторами в последней строке консоли.

Перед тегом </body> есть строка сценариягде я могу поставить точку останова.На этом этапе dojo устанавливается как структура, как и ожидалось.Так что это делает некоторый код, который загружается после загрузки страницы.

(РЕДАКТИРОВАТЬ: Я хотел бы делать итеративные, точечные точки останова, если бы мог. Но у меня есть доступ к Edge только через BrowserStack, и я пытаюсьустановить полезные точки останова в минимизированном коде очень сложно в инструментах разработчика Edge.)

  1. У кого-нибудь есть предложения, что мне нужно искать?
  2. Как отлаживать для этого?Существует ли клиентская переменная, в которой вы можете видеть функции, установленные для загрузки документа, или способ, которым я могу поместить в них контрольные точки?
  3. Я пытался использовать watch() прокладку в консоли, чтобы наблюдать за додзёобъект меняется, но с этим не повезло.(но, возможно, сделал это неправильно, поэтому, если это идея, мне может понадобиться помощь в правильной реализации).

РЕДАКТИРОВАТЬ: Есть также это, если это помогает понять какой-либо смысл.После удаления dojo настройка работает как положено.

dojo back to normal after deleting it

1 Ответ

0 голосов
/ 11 декабря 2018

Ну, я не знаю, в чем конкретно проблема, но кто-то, по крайней мере, дал мне способ, которым это возможно:

window.__defineGetter__('dojo', function(){ return null })

Это несуществуют в оригинальном коде, но, по крайней мере, теперь я вижу, как это вообще возможно.Человек, который дал мне это, предполагает, что код может пытаться получить и защитить свою собственную копию додзё, но что-то с этим не так в Edge.

...