Durante il tentativo di trasferire l’estensione dalla versione manifest alla versione 2, è apparso:
Errore porta: imansible stabilire una connessione. La fine di ricezione non esiste. chromeHidden.Port.dispatchOnDisconnect miscellaneous_bindings: 232
Questo è apparso in Console negli strumenti di sviluppo. Non ho idea di dove iniziare a correggere questa causa non so cosa sta causando a cominciare con ..
cosa può causare questo problema? ed è in qualche modo ansible sapere esattamente cosa lo sta causando? Grazie.
La causa più probabile di errore è l’triggerszione della politica di sicurezza del contenuto predefinita quando "manifest_version": 2
è attivo. Una conseguenza del CSP predefinito è che JavaScript in linea non verrà eseguito .
La riga precedente è un esempio di codice inline. La soluzione è posizionare lo script in un file JS esterno:
Quando stavi usando le pagine in background , non usare:
"background_page": "background.htm"
, o "background": {"page": "background.htm"}
, "background": {"scripts": ["background.js"]}
background.js
contiene lo script inizialmente posizionato all’interno dei tag
in background.htm
. I popup di azione del browser, i lanciatori di app, le pagine di opzioni, ecc. Spesso contengono listener di eventi in linea. Dal CSP, questi sono anche vietati.
non funziona . La soluzione è aggiungere l'evento in un file JS esterno usando
addEventListener
. Dai un'occhiata alla documentazione o questa risposta per un esempio.
eval
, Function
, setTimeout
, ...) è vietata. Riscrivi il tuo codice per non creare codice dalle stringhe, o usa l' opzione manifest sandbox (introdotto in Chrome 21). A partire da Chrome 22 , è ansible utilizzare la politica CSP di unsafe-eval
per eliminare questa limitazione. JSONP non funziona, perché le risorse esterne (JavaScript) non possono essere caricate nel contesto dell'estensione . Utilizzare un ordinario XMLHttpRequest
invece di JSONP ( ulteriori informazioni + esempio ).
L'unica eccezione è quando la risorsa viene recuperata su https
non http . Il CSP può essere regolato per introdurre questa eccezione - consultare la documentazione :
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'",
La documentazione ufficiale fornisce anche un'eccellente spiegazione sull'argomento, vedi "Tutorial: Migrazione a Manifest V2" .
Per me la soluzione stava cambiando:
a:
Forse è anche aiutare gli altri!