Я разработал расширение Chrome, и оно в основном совместимо с firefox API веб-расширений. Только одна проблема:
В Chrome Расширение у меня есть всплывающее окно. js и фон. js. Пользователь нажимает кнопку, всплывающее окно. js делает chrome .sendMessage для фона. js, где данные получены и после этого (всплывающее окно. html может быть в это время закрыто), я просто вызываю в фоновом режиме. js:
<code>newWin = window.open("about:blank", "Document Query", "width=800,height=500");
newWin.document.open();
newWin.document.write('<html><body><pre>' + documentJson + '
'); // newWin.document.close ();
, поэтому отлично работает в Chrome расширении, но не в firefox. Я прочитал здесь (https://javascript.info/popup-windows), что по соображениям безопасности firefox будет открываться только с «событием нажатия кнопки». И если я перейду над кодом во всплывающее окно. js, внутри button-click-evenListener, он откроется таким образом (но у меня пока нет подготовленных данных, это действительно не то, что я хочу)
Так что я перепробовал все, что нашел, но у меня не работает chrome .tabs.executeScript. Вот мой код с комментариями:
popup. js
// working in firefox and chrome (popup.js)
const newWin = window.open("about:blank", "hello", "width=200,height=200");
newWin.document.write("Hello, world!");
// not working firefox: id's match, he enters function (newWindow) but document.write doing nothing (but no error in log)
// not working chrome: doesnt even enter "function (newWindow)""
chrome.windows.create({
type: 'popup',
url: "output.html"
}, function (newWindow) {
console.log(newWindow);
console.log(newWindow.id);
chrome.tabs.executeScript(newWindow.tabs[0].id, {
code: 'document.write("hello world");'
});
});
background. js
(создан локальный вывод. html и дан несколько разрешений в манифесте. json - вкладки, activeTab, вывод. html, about: blank)
// opening but executeScript not working in firefox: Unchecked lastError value: Error: The operation is insecure.
// opening but executeScript not working in chrome: Unchecked runtime.lastError: Cannot access contents of url "chrome-extension://plhphckppghaijagdmghdnjpilpdidkh/output.html". Extension manifest must request permission to access this host
chrome.tabs.create({
// type: 'popup',
url: "output.html"
}, function (newWindow) {
console.log(newWindow);
console.log(newWindow.id);
chrome.tabs.executeScript(newWindow.id, {
code: 'document.write("hello world");'
});
});
Как получить данные в новом окне / всплывающем окне из фона. js - я могу открыть пустую страницу оттуда, так что это только о запуске executeScript ()