Не удается выполнить сценарии контента в расширении Edge после установки

В Chrome можно запускать сценарии содержимого после установки расширения, то есть приведенный ниже код работает, а слова «скрипт содержимого» отображаются в журнале консоли всех открытых вкладок после установки.

Однако в Edge это не работает. Похоже, это ошибка в Edge. Любые идеи, как обойти, чтобы content-script.js выполнялся после установки расширения на всех вкладках?

фон.js

browser.runtime.onInstalled.addListener(function(details) { 
    var scripts = browser.runtime.getManifest().content_scripts[0].js;
    browser.tabs.query({}, function(tabs) {
        tabs.forEach(function(tab){
            for(var k=0; k<scripts.length; k++) {
                browser.tabs.executeScript(tab.id, {
                    file: scripts[k]
                });
            }
        });
    });
});

контент-script.js

console.log("content script");

person cnmuc    schedule 13.03.2020    source источник
comment
Если вы используете постоянный фоновый скрипт, вы можете просто выполнить проверку в начале, отправив тестовое сообщение на любую соответствующую вкладку (ваш скрипт контента ответит чем-то вроде ok или true), поэтому, если ответа нет, продолжите повторную загрузку. Для непостоянного сценария вы можете использовать любое другое событие и выполнить ту же проверку.   -  person wOxxOm    schedule 13.03.2020
comment
Речь не идет о проверке активности скриптов контента, в Edge (ре)инжекция вообще не работает.   -  person cnmuc    schedule 13.03.2020
comment
FWIW executeScript работает для меня в текущей версии Edge на основе Chromium. Вы отлаживали код, чтобы увидеть, в какой момент он терпит неудачу? Это сам onInstalled, query() или executeScript?   -  person wOxxOm    schedule 13.03.2020
comment
executeScript в целом работает, но не в контексте onInstalled. executeScript вроде бы вызывается (запрос работает, цикл for работает, сообщений об ошибках нет), но безрезультатно.   -  person cnmuc    schedule 14.03.2020
comment
Понимаю. Попробуйте добавить runAt: 'document_start', возможно, он считает, что вкладки все еще загружаются.   -  person wOxxOm    schedule 14.03.2020
comment
Еще одна идея: попробуйте задержать процесс примерно на 1 секунду в setTimeout.   -  person wOxxOm    schedule 14.03.2020
comment
Не могли бы вы сообщить нам, в какой версии Edge вы тестируете эту проблему? Пожалуйста, проверьте ошибки расширений и сообщите нам об этом, это может помочь получить правильное представление о проблеме. Если возможно, вы можете разместить свой пример кода на GitHub. Чтобы мы могли протестировать Chrome и Edge, чтобы увидеть разницу.   -  person Deepak-MSFT    schedule 16.03.2020
comment
@Deepak-MSFT Microsoft Edge 42.17134.1098.0, Microsoft EdgeHTML 17.17134 github.com/thunvogel/so-60674405   -  person cnmuc    schedule 16.03.2020
comment
@wOxxOm runAt и тайм-аут не сработали. перезагрузка всех вкладок должна работать, но это непрактичный вариант, поскольку могут быть открыты сотни вкладок, и браузер значительно замедлится или даже выйдет из строя.   -  person cnmuc    schedule 16.03.2020
comment
FWIW Вы можете перезагружать вкладки последовательно...   -  person wOxxOm    schedule 16.03.2020
comment
@wOxxOm только что попробовал вашу идею перезагрузки. это не будет работать, так как скрипт контента становится активным только на новых вкладках (после установки расширения)   -  person cnmuc    schedule 16.03.2020
comment
Значит, баг еще хуже? Вкладки со старым сценарием содержимого становятся мертвыми для расширения.   -  person wOxxOm    schedule 16.03.2020
comment
@cnmuc, я вижу, вы тестируете расширение с устаревшей версией MS Edge. Microsoft больше не принимает новые расширения для устаревшей версии MS Edge. Предлагаю вам разработать расширение для нового браузера MS Edge Chromium. Вы можете предложить своим пользователям перейти на новый браузер Edge Chromium. Поскольку новый MS Edge использует движок браузера Chromium, это также может помочь решить эту проблему.   -  person Deepak-MSFT    schedule 17.03.2020
comment
@Deepak-MSFT, вы правы, с последней версией Edge все работает нормально. я перестану пытаться поддерживать версию lecacy. Спасибо!   -  person cnmuc    schedule 17.03.2020
comment
Я предлагаю вам отметить полезное предложение как ответ на этот вопрос. Спасибо за понимание.   -  person Deepak-MSFT    schedule 17.03.2020


Ответы (1)


Я вижу, что вы тестируете расширение с устаревшей версией MS Edge.

Microsoft больше не принимает новые расширения для устаревшей версии MS Edge.

Предлагаю вам разработать расширение для нового браузера MS Edge Chromium. Вы можете предложить своим пользователям перейти на новый браузер Edge Chromium. Поскольку новый MS Edge использует движок браузера Chromium, это также может помочь решить эту проблему.

person Deepak-MSFT    schedule 17.03.2020