Я в процессе переноса расширения Chrome для работы в Firefox.Я создал расширение Chrome, в котором у скрипта контента (content-script.js
) есть некоторый код, который встраивает iframe (index.html
), который затем ссылается на некоторый код приложения (client.js
).Код приложения выполняет вызовы расширений Chrome API (например, chrome.cookies
, chrome.windows
), и все это работает нормально.
В процессе преобразования кода для использования API Webextensions код выдает некоторые ошибки (например, browser.windows is undefined
).Поэтому я подозреваю, что код приложения запускается в контексте скрипта содержимого в Firefox.
Я отлаживал в обоих браузерах и проверил объект browser
.Я вижу, что разрешения, которые я добавил в манифест, не обнаружены в коде моего приложения при отладке в Firefox.
manifest.json
{
...
"permissions": ["cookies"],
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content-script.js"]
}]
}
index.html
<html>
<body>
<script type="text/javascript" src="client.js" />
</body>
</html>
content-script.js
const iframe = document.createElement('iframe');
iframe.src = browser.runtime.getURL('index.html');
document
.getElementsByTagName('body')
.item(0)
.append(initialIframe);
client.js
browser.windows.create({url: 'https://google.com'});
Я бы ожидал, что оба будут вести себя одинаково.Либо оба не должны позволять сценариям кода приложения (client.js
) запускать команды расширения (так как они были встроены сценарием содержимого), либо они оба должны это разрешать.Любая помощь или указатели на ресурсы будут очень цениться.Спасибо.