2012-05-01 37 views
26

Tôi đang viết một phần mở rộng chrome chỉ vào nó cảnh báo cho một Hello World tất cả những trang tôi xác định cho phép kết thúc việc nạp nhưng nó không làm việc, đây là kịch bản của tôiChrome Extension chạy cho một trang cụ thể

File: manifest.json

{ 
    "name": "Hello", 
    "version": "1.0", 
    "description": "Says hello to Google", 
    "permissions": ["http://*.google.com/"] 
    "browser_action": { 
    "popup": "Hello.html" 
    } 
} 

file: Hello.html

<script language="Javascript"> 
    alert("Hello World"); 
</script> 

Trả lời

43

Bạn đang thêm cửa sổ bật lên hành động trình duyệt, thêm nút ở trên cùng bên phải trình duyệt của bạn. (Có thể là vô hình vì bạn chưa chỉ định hình ảnh cho nó. Nên có một số khoảng trống ở bên phải thanh địa chỉ của bạn; hãy thử nhấp vào nó để xem Hello.html trong cửa sổ bật lên.)

Điều bạn muốn là content script. Tập lệnh nội dung có thể được đưa vào mỗi trang mà Chrome tải. Bạn có thể sử dụng các mục con số matchesexclude_matches trong tệp kê khai của mình để chỉ định trang nào nhận được tập lệnh được chèn của bạn.

{ 
    "name": "Hello", 
    "version": "1.0", 
    "description": "Says hello to Google", 
    "permissions": ["tabs", "*://*.google.com/*"], 
    "content_scripts": [ 
    { 
     "matches": ["*://*.google.com/*"], 
     "js": ["hello.js"] 
    } 
    ] 
} 

Hãy chắc chắn rằng bạn đổi tên Hello.html-hello.js (và thoát khỏi <script> thẻ).

Cũng lưu ý rằng tôi đã thay đổi của bạn http://*.google.com/ để *://*.google.com/* để nó sẽ áp dụng cho Google qua HTTP và HTTPS (và trailing * đảm bảo rằng nó sẽ áp dụng cho tất cả các trang trên google.com, không chỉ là trang chính).

+1

Quyền 'tab' là không cần thiết. Trong thực tế, tất cả các điều khoản là không cần thiết, bởi vì 'alert ('Hello World!')' Không truy cập DOM của trang. Các mẫu URL tuân theo các quy tắc rất nghiêm ngặt, xem [Mẫu trận đấu] (http://code.google.com/chrome/extensions/match_patterns.html). –

+0

Rất tiếc, đó là các quyền đối với một thứ khác; bạn thực sự không cần quyền để chạy tập lệnh nội dung. (Những thứ cụ thể mà bạn làm * bên trong * một kịch bản nội dung có thể yêu cầu quyền). – apsillers

+0

"Loại bỏ"

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