2013-05-12 27 views
42

Trong thư mục Stackoverflow của tôi, tôi có stackoverflow.ico và 2 tệp dưới đây. Khi nhập nó vào Chrome, nó sẽ hiển thị biểu tượng trong thanh địa chỉ, nhưng khi tôi nhấp vào nó, Chrome sẽ không mở bất kỳ tab mới nào. Tôi đang làm gì sai?Tiện ích của Chrome: Cách mở liên kết trong tab mới?

manifest.json

{ 
    "name": "Stackoverflow", 
    "version": "1", 
    "browser_action": 
    { 
    "default_icon": "stackoverflow.ico" 
    }, 
    "background": 
    { 
    "page": "index.html" 
    }, 
    "permissions": ["tabs"], 
    "manifest_version": 2 
} 

index.html

<html> 
    <head> 
    <script> 
     chrome.browserAction.onClicked.addListener(function(activeTab) 
     { 
     var newURL = "http://stackoverflow.com/"; 
     chrome.tabs.create({ url: newURL }); 
     }); 
    </script> 
    </head> 
</html> 

Trả lời

65

Vấn đề là bạn đang vi phạm manifest version 2's content security policy. Để khắc phục tất cả những gì bạn phải làm là loại bỏ tập lệnh nội tuyến, trong trường hợp này là nền của bạn page. Biến nó thành một nền script như thế này:

manifest.json

"background":{ 
    "scripts": ["background.js"] 
}, 

background.js

chrome.browserAction.onClicked.addListener(function(activeTab){ 
    var newURL = "http://stackoverflow.com/"; 
    chrome.tabs.create({ url: newURL }); 
}); 

Nếu vì một lý do nào, bạn cần nó để được một trang, sau đó chỉ cần bao gồm tập lệnh dưới dạng tệp bên ngoài và khai báo nó như một trang như trước đây.

+2

Cảm ơn bạn. Nó hoạt động ngay bây giờ! – Sakura

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