Qt QWebEngine Remote Debugging: Chrome инструменты разработчика больше не работают - PullRequest
6 голосов
/ 19 февраля 2020

Недавно после некоторых обновлений программного обеспечения (автоматическое обновление Windows 10 и, возможно, автоматическое обновление Chrome) перестали работать инструменты разработчика для удаленной отладки из Qt QWebEngine. Консоль JavaScript показывает это:

Uncaught TypeError: document.registerElement is not a function
    at Object.UI.registerCustomElement (shell.js:formatted:18064)
    at shell.js:formatted:18178
    at shell.js:formatted:18266
devtools_app.js:formatted:2606 Uncaught ReferenceError: SDK is not defined
    at devtools_app.js:formatted:2606

Рассматриваемый код (из оболочки. js) таков:

UI.registerCustomElement = function(localName, typeExtension, prototype) {
    return document.registerElement(typeExtension, {
        prototype: Object.create(prototype),
        extends: localName
    });
}

Что такое оболочка. js и где это откуда? В чем может быть причина этой проблемы?

Веб-страница фактически запускается в веб-браузере Qt 5.12.3, но я использую Chrome (удаленно) для Инструментов разработчика.

Я также обновил Angular 7.x до Angular 8 в то же время, но больше не верю, что это связано.

My Chrome в настоящее время версия 80.0.3987.116 (Официальная сборка) (64-разрядная версия).

ОБНОВЛЕНИЕ Я только что попытался загрузить более старую версию Chromium. (Я пробовал версию 77.0.3823.0, поскольку она датируется серединой 2019 года.) И отладка там РАБОТАЕТ.

Ответы [ 2 ]

7 голосов
/ 03 марта 2020

https://developer.tizen.org/forums/web-application-development/tizen-studio-debug-tizen-web-application-blank-page-chrome-80

Chrome 80 устарел WebComponents v0, который используется этими devtools.

Решение состоит в том, чтобы запустить Chrome с дополнительными параметрами, повторно активирующими функцию (пока она еще в двигателе):

- enable-blink-features = ShadowDOMV0, CustomElementsV0

Или используйте сборку Chromium, соответствующую Chrome 79.x, например,

Windows: https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Win_x64/706915/
Mac: https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Mac/706915/
Linux: https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/706915/

См .: Инспектор Chrom devtools показывает пустой белый экран при отладке с помощью веб-приложения Samsung TV Tizen

2 голосов
/ 20 февраля 2020

Google удалил WebComponents V0 из Chrome, но GUI для удаленной отладки использует их. Поэтому, когда вы пытаетесь запустить удаленную отладку на устройстве со старым Chrome на борту - отладчик падает с

Uncaught TypeError: document.registerElement is not a function

Я нашел два способа борьбы с этим

  1. Понижение Chrome и не существует простого способа сделать это (если вы используете ma c здесь ссылку для вас https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Mac / 668249 / )
  2. Обновление chrome на целевом устройстве и в большинстве случаи это невозможно (
...