2012-07-18 39 views
27

Tôi đang cố gắng để làm cho cơ bản một phần tử highlighter chrome mở rộng. Workflow: - click vào biểu tượng trình duyệt - click vào trang - làm nổi bật các phần tử nhấpchrome extension insert content script trên trình duyệt action

Tôi gặp rắc rối trong việc điều hành các kịch bản nội dung khi hành động trình duyệt sử dụng manifest_version: 2 Khi tôi kiểm tra popup xuất hiện nó nói :

Từ chối thực hiện kịch bản nội tuyến vì nó vi phạm Nội dung chỉ thị sau Security Policy: "kịch bản-src 'tự' chrome mở rộng tài nguyên:" (popup.html: 5).

Đó là nơi mà các kịch bản nội tuyến trong popup.html là và kịch bản không làm việc

tôi có:

manifest.json:

{ 
    "browser_action": { 
     "default_icon": "images/icon.gif", 
     "default_popup": "popup.html" 
    }, 
    "manifest_version": 2, 
    "description": "MEH!", 
    "name": "My First Extension", 
    "permissions": [ 
     "tabs", "http://*/*", "https://*/*" 
    ], 
    "version": "0.1" 
} 

popup.html:

<html> 
    <head> 
    </head> 
    <body> 
    <script> 
     chrome.tabs.executeScript(null,{ 
     code:"document.body.style.backgroundColor='red'" 
     }); 
    </script> 
    <div id='msg' style="width:300px">...</div> 
    </body> 
</html> 

Bất kỳ trợ giúp nào sẽ được rất nhiều sự đánh giá cao ed

+0

trùng lặp có thể xảy ra của [Phần mở rộng Chrome cửa sổ bật lên không hoạt động, các sự kiện nhấp không được xử lý] (http://stackoverflow.com/questions/17601615/the-chrome-extension-popup-is-not-working-click -nơi không được xử lý) – Makyen

Trả lời

44

Hóa ra tôi không thể đọc lỗi đúng cho đến khi tôi nhìn thấy nó ở đây

Rõ ràng manifest v2 không cho phép bạn để có kịch bản nội tuyến, vì vậy bạn chỉ cần

src="path_to_the_file.js" 
+3

Đối với những người vẫn không nhận được câu trả lời, hãy xem http://stackoverflow.com/a/17612988/938089 –

+1

Bạn đang đặt src ở đâu? Câu trả lời này không rõ ràng. – Doug

+0

bên trong cơ thể. Vì vậy, thay vì chèn một bảng điều khiển bạn sẽ chèn một tập lệnh trỏ đến một tệp, hay còn gọi là bên trong HTML của trang (như bên trong HEAD hoặc cái gì- không phải) – Stefan

0

Trong phần mở rộng tới câu trả lời của @ tak3r và nhận xét của @ Doug:

Cần phải thay đổi tập lệnh nội tuyến thành tập lệnh bên ngoài.

Move:

<script> 
    chrome.tabs.executeScript(null,{ 
    code:"document.body.style.backgroundColor='red'" 
    }); 
</script> 

Đối với một tập tin mới gọi là main.js và loại bỏ các <script></script> thẻ

Bao gồm những điều sau đây trong <head></head> HTML của bạn

<script type="text/javascript" src="main.js"></script> 
Các vấn đề liên quan