Я в тупике. Мое расширение Chrome в основном основано на popup.html.
Он отлично работал на Chrome 65.x. Я получил отчет об ошибке от пользователей Chrome 66.0, в котором говорилось, что расширение не отображается правильно.
Я обновил Chrome до 66.0 и смог воспроизвести ошибку. Popup.html быстро мигает и обрезается до крошечного белого квадрата, как если бы он был пуст.
В чем может быть проблема?
Манифест:
{
"description": "...",
"manifest_version": 2,
"name": "...",
"version": "1.5.0",
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"permissions": [
"tabs",
"cookies",
"<all_urls>"
],
"browser_action": {
"browser_style": true,
"default_popup": "popup/popup.html"
}
}
popup.html содержит локальную копию KnockoutJS. При удалении всего Javascript он загружается правильно. Однако в JS-коде не было никаких изменений с Chrome 65, где он работал правильно.
Щелкните правой кнопкой мыши значок расширения, выберите «Проверить всплывающее окно» и найдите ошибки в консоли. Сообщите здесь о любых соответствующих сообщениях, чтобы мы могли оказать дополнительную помощь
Нет ошибок в консоли, всплывающее окно иногда отображается правильно при проверке, хотя
Возможно, это ошибка в Chrome 66. Посмотрите, исправлена ли она в Chrome Canary, в противном случае сообщите о crbug.com, если об этом еще не сообщалось.
Я зарегистрировал здесь ошибку: bugs.chromium.org/p/chromium/issues/detail?id=838838
Если я нажимаю на нее достаточно часто, она иногда открывается правильно, что еще больше увеличивает вероятность того, что это ошибка Chrome.
Похоже, это связано с: bugs.chromium.org/p/chromium/issues/detail?id=428044
Проблема связана с Chrome 66: https://bugs.chromium.org/p/chromium/issues/detail?id=428044
Временный обходной путь заключался в изменении стиля тела после загрузки для принудительной перерисовки с помощью setTimeout.
// This height calculation is excessive due to padding, but it's not worth
// the extra coding effort to get it pixel-perfect (e.g. getComputedStyle).
const height = document.body.clientHeight;
// Set it slightly bigger immediately so hopefully this will lead to less
// flashing/refreshing. It's not clear whether this always worksaround the
// bug though :(.
document.body.style.height = `${height + 1}px`;
// Schedule an update in case the window is still too small. Hopefully
// this will catch the rest. If we already workedaround it, we'll only
// make the window slightly bigger so the user won't notice.
setTimeout(() => document.body.style.height = `${height + 2}px`, 100);
setTimeout(() => document.body.style.height = ``, 110)
Показать свой manifest.json и минимальный относительный код?