Сбой загрузки с исходным кодом “https://localhost/js/test.js ”

#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.