2013-08-06 16 views
5

Tôi cố gắng tạo tiện ích chrome đơn giản để thêm tùy chọn trong menu ngữ cảnh của chrome.chrome.contextMenus.create không hoạt động

Đây là manifest.json tôi

{ 
    "manifest_version": 2, 
    "background": "background.html", 
    "description": "Add a context menu item to search for selected text at Google Maps.", 
    "icons": { 
     "16": "icon16.png" 
    }, 
    "name": "Google Maps Right Click", 
    "permissions": [ "contextMenus", "tabs" ], 
    "version": "1.0" 
} 

và đây background.html tôi:

<script> 

function searchgooglemaps(info) 
{ 
var searchstring = info.selectionText; 
chrome.tabs.create({url: "http://maps.google.com/maps?q=" + searchstring}) 
} 

chrome.contextMenus.create({title: "Search Google Maps", contexts:["selection"], onclick: searchgooglemaps}); 

</script> 

Nhưng khi tôi tải các phần mở rộng và tôi phải bấm vào một lựa chọn, "Search Google Maps "nút không xuất hiện và tôi không hiểu tại sao ...

Cảm ơn bạn trước sự giúp đỡ của bạn.

+0

Trang nền của bạn có đang được tải không? [Tài liệu] (http://developer.chrome.com/extensions/background_pages.html) cho biết rằng định dạng tệp kê khai chính xác cho các trang nền là '" nền ": {" trang ":" background.html "}'. Lưu ý rằng thậm chí bạn có thể không cần trang nền và có thể sử dụng tập lệnh nền thay thế. – apsillers

+0

Hiệu quả, trang nền không hoạt động, với định dạng mới "" nền ": {" trang ":" background.html "}', trang nền đang hoạt động, nhưng tôi vẫn không thấy menu ngữ cảnh mới của mình phần tử nữa: '( – Slot

+1

có thể trùng lặp của [Lỗi cổng trong khi thay đổi tiện ích chrome từ tệp kê khai thành v1 thành v2] (http://stackoverflow.com/questions/11913575/port-error-while-changing-chrome-extension-from-manifest -v1-tới-v2) –

Trả lời

2

JavaScript nội tuyến trong tệp HTML thường không hoạt động nữa; đặt JavaScript của bạn vào tập tin riêng của nó để thay thế.

Bạn cũng có thể tạo Chrome background page cho mình, tiết kiệm dung lượng.

Vì vậy, để làm cho công việc của bạn mở rộng:

1) Tạo một tập tin (ví dụ như background.js) và đưa JavaScript trong đó:

function searchgooglemaps(info) 
{ 
var searchstring = info.selectionText; 
chrome.tabs.create({url: "http://maps.google.com/maps?q=" + searchstring}) 
} 

chrome.contextMenus.create({title: "Search Google Maps", contexts:["selection"], onclick: searchgooglemaps}); 

2) Trong biểu hiện của bạn, thay thế dòng background của bạn với này:

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

Mã bạn đã hiển thị sẽ không hoạt động trong các trang sự kiện. Nó cần ít nhất ba sửa đổi. –

+0

Phần mở rộng thử nghiệm của tôi cầu xin khác :) –

+4

Vì '" liên tục ": true' là trang nền, không phải trang sự kiện (' "liên tục": true' là giá trị mặc định, vì vậy nó có thể bị bỏ qua). –