2016-03-31 20 views
5

Tôi đang phát triển một chrome google đóng gói ứng dụng, khi tôi đặt Sandbox trong manifest.jsonTừ chối thực thi xử lý sự kiện nội tuyến vì vi phạm 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"] 
    } 
    } 
} 

Một sự kiện onclick trên thẻ neo của tôi làm việc, và dòng chảy của ứng dụng là hoàn toàn TRỪ, các biểu tượng từ một bản định kiểu css không tải.

Tôi đã nhận ra lỗi từ console

File not found,

nhưng đó chỉ là những phông chữ do đó, nó tốt với tôi,

Vấn đề lớn là, các video trong iframe không phát và tôi gặp lỗi bổ sung trước Phông chữ là:

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

Khi tôi loại bỏ các sandbox trong file manifest.json, mọi thứ đều tốt không có lỗi trong giao diện điều khiển về font chữ,

NHƯNG khi tôi hit/nhấp của tôi thẻ neo rằng có một sự kiện nhấp chuột để tải một mới chức năng trong js tôi nhận được sau điều khiển Lỗi:

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.

Xin lỗi vì các chi tiết rất dài,

tôi chỉ cần giúp đỡ với điều này bởi vì tôi đang bị mắc kẹt ở đây trong 3 ngày rồi.

Trả lời

17

trả lời cho những người không câu hỏi liên quan sandbox của bạn:

Bạn có một cái gì đó trong mã của bạn như thế này:

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

Tóm lại này không được phép trong các ứng dụng chrome. Thay đổi này như sau và nó sẽ làm việc:

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'); 
} 

dài câu chuyện:

Trong ứng dụng chrome Content Security Policy không cho phép javascript inline. Vì vậy, bạn phải đặt javascript của bạn trong một tập tin .js và bao gồm nó vào html của bạn.

Đọc thêm: https://developer.chrome.com/extensions/contentSecurityPolicy

+0

vâng tôi quên rằng javascript nội tuyến không được phép, nhưng làm cách nào để nhận ID của thẻ liên kết được nhấp? trong khi ID là động .. –

+0

tại sao id động? bạn có thể sử dụng thuộc tính class hoặc data-something html không? với javascript của bạn có thể tham khảo rất nhiều điều là DOM như tìm tất cả các thẻ và cung cấp cho họ sự kiện onclick Bạn có thể sử dụng somtting như thế này không? google kailniris

+0

nó năng động bởi vì mọi thứ đều từ POST –

Các vấn đề liên quan