#javascript #firefox #message #content-script
#javascript #firefox #Сообщение #контент-скрипт
Вопрос:
Фоновый сценарий:
let show_floater = true;
chrome.browserAction.onClicked.addListener(function (event) {
console.log('clicked');
chrome.tabs.executeScript(null, {
file: 'js/content.js', /* my content script */ }, () => {
connect(show_floater) //this is where I call my function to establish a connection
});
});
});
function connect(sf) {
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
console.log(show_floater, sf);
const port = chrome.tabs.connect(tabs[0].id);
console.log('doing stuff);
port.postMessage(sf);
});
}
Сценарий содержимого:
let var injected = false;
chrome.runtime.onConnect.addListener((port) => {
port.onMessage.addListener((show_floater) => {
if (!show_floater) {
injected = 0;
document.querySelector(".beebole_css").remove();
document.querySelector(".beebole_js").remove();
document.querySelector(".beebole_container").remove();
//document.querySelector(".beebole_button").remove();
}
else if (!injected) {
injected = true;
let link = document.createElement("link");
link.className = 'beebole_css';
link.href = "https://localhost/css/test.css";
link.type = "text/css";
link.rel = "stylesheet";
document.querySelector("head").appendChild(link);
let s = document.createElement("script");
s.className = 'beebole_js';
s.src = "https://localhost/js/test.js";
s.type = 'text/javascript';
// document.body.appendChild(s);
document.querySelector('body').appendChild(s);
}
});
});
Приведенный выше код выполняется в Chrome, но в Firefox я получаю эту ошибку
Loading failed for the <script> with source “https://localhost/js/test.js”.
это мой манифест
{
"manifest_version": 2,
"name": "Counterstring",
"version": "0.1",
"description": "simple counterstring generation",
"content_scripts": [
{
"run_at": "document_end",
"matches": [
"<all_urls>"
],
"js": [
"js/content.js"
]
}
],
"content_security_policy": "script-src 'self' https://localhost/js/test.js; object-src 'self'",
"background": {
"persistent": true,
"scripts": [
"js/background.js"
]
},
"browser_action": {
"deafult_icon": "icons/icon16x16.png"
},
"permissions": [
"contextMenus",
"activeTab",
"tabs"
],
"icons": {
"16": "icons/icon16x16.png",
"48": "icons/icon48x48.png",
"128": "icons/icon128x128.png"
}
}
Побочный квест:
в приведенном выше манифесте я поместил content_scripts, потому что я получил ошибку разрешения, если я этого не сделал, но, насколько я понимаю, отсюда я должен быть в состоянии избежать этого, используя postMessage() . Является ли мое понимание ошибочным?
Комментарии:
1. @expressjs123 как бы я тогда с этим справился? Потому что в Chrome это работает без проблем, а в Firefox нет.
2. @expressjs123 — Почитайте, а затем рассмотрите комментарий, который вы только что сделали. 🙂 en.wikipedia.org/wiki /. …
Ответ №1:
найдено решение, проблема заключалась в том, что у меня не было SSL-сертификата для авторизации моего локального хостинга в Firefox.