5

sto sviluppando un cromo google confezionato app, quando ho messo Sandbox nel manifest.jsonRifiutato di eseguire il gestore eventi in linea perché viola CSP. (Sandbox)

{ 
    "manifest_version": 2, 
    "name": "WM32216", 
    "version": "2.1", 
    "minimum_chrome_version": "23", 
    "permissions":["webview", "https://ajax.googleapis.com/*"], 
    "sandbox":{ 
     "pages":["index.html"] 
    }, 
    "app": { 
    "background": { 
     "scripts": ["main.js"] 
    } 
    } 
} 

Un evento onclick sul mio tag anchor funziona, e il flusso delle app è completo ECCETTO QUELLO, le icone da un foglio di stile CSS non vengono caricate.

ho ottenuto un errore dalla console che

File not found,

ma questi sono solo font quindi è bene con me,

Il grosso problema è che, il video in l'iframe non viene riprodotto e ho ricevuto un errore aggiuntivo prima del font che sono:

VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) The media could not be loaded, either because the server or network failed or because the format is not supported.

Not allowed to load local resource: blob:null/b818b32c-b762-4bd9-...

Quando rimuovo la sandbox nel file manifest.json, tutto è buono errori nella console sul tipo di carattere,

ma quando ho hit/mouse su Risorse del tag anchor che ha un evento click per caricare un nuovo funzione nelle js sto ottenendo il seguente errore Console:

Refused to execute inline event handler because it violates the following Content Security Policy directive: "default-src 'self' blob: filesystem: chrome-extension-resource:". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.

Ci scusiamo per il lunghissimo dettaglio,

ho solo bisogno di aiuto con questo perché io sono bloccato qui per 3 giorni già.

risposta

17

risposta per la tua domanda relativa non sandbox:

Hai qualcosa nel codice come questo:

<button onclick="myFunction()">Click me</button>

In poche parole questo non è consentito nelle applicazioni cromate. Modificare questo alla seguente e funzionerà:

html: 
<button id="myButton">Click me</button> 
<script src="myScripts.js"></script> 

myScript.js: 
document.getElementById("myButton").addEventListener("click", myFunction); 

function myFunction(){ 
    console.log('asd'); 
} 

Lunga storia:

In applicazioni Chrome contenuti la politica di sicurezza non permette javascript inline. Quindi devi inserire il tuo javascript in un file .js e includerlo nel tuo html.

Ulteriori approfondimenti: https://developer.chrome.com/extensions/contentSecurityPolicy

+0

sì ho dimenticato che in linea javascript non è consentito, ma come faccio a ottenere l'ID del tag di ancoraggio che è stato cliccato? mentre l'ID è dinamico .. –

+0

perché l'ID dinamico? puoi usare l'attributo html di classe o data-qualcosa? con javascript puoi riferirti parecchio al DOM come trovare tutti i tag e dare loro l'evento onclick Puoi usare somtting come questo? google kailniris

+0

è dinamico perché tutto proviene da POST –

Problemi correlati