it-swarm.com.de

Chrome Fehler anzeigen als: Inline-Skript konnte aufgrund der Inhaltssicherheitsrichtlinie nicht ausgeführt werden

Ich arbeite an der Erstellung einer Chrome Erweiterung eines Bildbeschneidungs-Widgets. Der Code meines popup.html ist wie folgt:

    <body>
            <textarea id="widget_script" style="border:1px solid #ccc;padding:5px;width:600px" rows="5" readonly></textarea>
            <script type="text/javascript">
                var protocol=window.location.protocol;
                var Host= window.location.Host;
                var head=('<div id="wd_id" style="margin-bottom: 20px;"></div>
                <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></\script>
                <script type="text/javascript" src="'+protocol+'//'+Host+'Image_crop/cropimages/img_crop_widget.js'+'"><\/script>
                <script type="text/javascript">init_widget()<\/script>');
                document.getElementById("widget_script").innerHTML=head;
            </script>
    </body>

Die Variablen Protokoll und Host nehmen Protokoll und Host von der URL im Browser. Als ich versuchte, dies als Chrome Erweiterung zu integrieren, funktioniert es nicht. Wenn es perfekt funktioniert, zeigt es folgenden Code im Textbereich an:

<div id="wd_id" style="margin-bottom: 20px;"></div>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://localhost/cropimages/img_crop_widget.js"></script>
<script type="text/javascript">init_widget()</script>

Ich habe ein paar Dinge wie das Platzieren des JS-Codes in einer externen JS-Datei und das Aufrufen der Datei in manifest.json Aufruf in meinem popup.html, aber keiner hat funktioniert.

Kann mir jemand sagen, was ich falsch mache oder was ich sonst noch versuchen soll, damit es funktioniert?

Danke im Voraus...

37
V15HM4Y

Aus den Chrome-Erweiterung CSP-Dokumenten :

Inline JavaScript wird nicht ausgeführt. Diese Einschränkung verbietet sowohl Inline-<script> Blöcke und Inline-Ereignishandler (z. B. <button onclick="...">).

Sie haben kann nicht Inline-Skripte in Ihrer HTML-Erweiterung wie folgt:

<script>alert("I'm an inline script!");</script>

<button onclick="alert('I am an inline script, too!')">

Sie müssen Ihr Skript vielmehr in einer separaten Datei ablegen:

<script src="somescript.js"></script>
73
apsillers

Sie müssen content_security_policy Zu Ihrer manifest.json - Datei hinzufügen:

"content_security_policy": "script-src 'self' 'sha256-B+Qe/KNUDtGDd/m1g5ycAq1DgpLs9ubKmYTlOHBogC8='; object-src 'self'"

Sie finden den Hash von der Konsole.

enter image description here

4
emon