2013-10-19 13 views
13

Tiện ích mở rộng G của Chrome có thể có 'browser action'. Thông thường, nhà phát triển mở sẽ hiển thị các tùy chọn khi bạn nhấp vào tùy chọn đó, nghĩa là mọi hành động đều yêu cầu 2 lần nhấp, ngay cả hành động 99% -of-the-time mặc định. Chrome tự thêm một menu ngữ cảnh với một vài tùy chọn: tắt ext, gỡ cài đặt ext, đi tới trang chủ ext, v.v.Thêm các mục ngữ cảnh vào nút tác vụ trình duyệt của tiện ích Chrome

Tôi có thể làm nhà phát triển mở thêm mục vào menu ngữ cảnh đó, vì vậy tôi có thể giữ hành động 1 lần nhấp của mình trong nhấp chuột bình thường/trái/chính?

Tôi biết về chrome.contextMenus nhưng chỉ dành cho các menu ngữ cảnh trong trang (xem thuộc tính 'contexts').

tôi không thể tìm thấy nó trong Chrome Extension dev guide, nhưng bạn biết nhiều hơn I.

Trả lời

24

now possible, AdBlock mở rộng chrome có nó. Dưới đây là ví dụ hoạt động của "menu ngữ cảnh trong hành động trình duyệt".

manifest.json:

{ 
    "name": "Custom context menu in browser action", 
    "version": "1", 
    "manifest_version": 2, 
    "background": { 
     "scripts": ["background.js"] 
    }, 
    "browser_action": { 
     "default_title": "Some tooltip", 
     "default_popup": "popup.html" 
    }, 
    "permissions": [ 
     "contextMenus" 
    ], 
    "icons": { 
     "16": "icon16.png" 
    } 
} 

background.js:

chrome.contextMenus.removeAll(); 
chrome.contextMenus.create({ 
     title: "first", 
     contexts: ["browser_action"], 
     onclick: function() { 
     alert('first'); 
     } 
}); 

Lưu ý rằng nếu bạn sử dụng một Event page, bạn không thể sử dụng thuộc tính onclick; bạn sẽ cần phải thêm người nghe vào chrome.contextMenus.onClicked để thay thế.

+0

Điều đó không trả lời câu hỏi: câu hỏi là ** cụ thể về trình đơn ngữ cảnh của trình duyệtAction **. Tuy nhiên, bạn đúng rằng câu trả lời là "bây giờ là có thể". Chăm sóc để sửa chữa câu trả lời của bạn? – Xan

+0

là về browser_action – asdjfiasd

+0

Ví dụ của bạn, tuy nhiên, không phải là ('browser_action' không được bao gồm trong' all' mặc dù tài liệu nói gì). Sửa ví dụ và tôi sẽ vui lòng upvote. – Xan

0

Đó là không thể để thêm bất kỳ mục tùy chỉnh vào menu ngữ cảnh.

Tuy nhiên, bạn có thể chỉ định động một bảng điều khiển cho nút bằng chrome.browserAction.setPopup. Bạn có thể sử dụng options page để cho phép người dùng chọn tùy chọn ưa thích của họ (hành động nhấp một lần hoặc hai nhấp chuột & nhiều hành động). Thực tế là các trang tùy chọn chỉ là hai lần nhấp chuột từ nút cũng khá tốt đẹp.

Đây là mã mẫu để minh họa khái niệm chuyển đổi giữa bảng điều khiển và nhấp một lần.

background.js (sử dụng trong bạn event/background page):

chrome.browserAction.onClicked.addListener(function() { 
    // Only called when there's no popup. 
    alert('Next time you will see a popup again.'); 
    chrome.browserAction.setPopup({ 
     popup: 'popup.html' 
    }); 
}); 

popup.html, chỉ dành riêng cho bản demo (sử dụng CSS để làm cho nó trông tốt hơn):

<button>Click</button> 
<script src="popup.js"></script> 

popup.js, chỉ dành riêng cho bản demo . JavaScript phải được đặt trong một tệp riêng biệt vì số CSP.

document.querySelector('button').onclick = function() { 
    chrome.browserAction.setPopup({ 
     popup: '' // Empty string = no popup 
    }); 
    alert('Next time, you will not see the popup.'); 
    // Close panel 
    window.close(); 
}; 

Như bạn có thể thấy trong ví dụ này, chrome.browserAction.setPopup cũng có sẵn trong một trang bật lên.

PS. manifest.json, vì vậy bạn có thể sao chép-dán ví dụ và chơi với câu trả lời này.

{ 
    "name": "Test badge - minimal example", 
    "version": "1", 
    "manifest_version": 2, 
    "background": { 
     "scripts": ["background.js"] 
    }, 
    "browser_action": { 
     "default_title": "Some tooltip" 
    } 
} 
+0

Tôi không thích cửa sổ bật lên hành động của trình duyệt. Nó luôn luôn chậm. Cho người dùng lựa chọn là thông minh mặc dù.Tuy nhiên, tôi nghĩ rằng tôi sẽ sử dụng 'chrome.contextMenus' cho các tùy chọn ít được sử dụng hơn, vì vậy chúng luôn có sẵn, nhưng hành động mặc định (để mở trang tùy chọn trong phần mở rộng của tôi) luôn là 1 lần nhấp chuột. Ý tưởng tốt mặc dù! – Rudie

+0

Điều này không đúng, bạn CÓ THỂ thêm các mục vào ngữ cảnhMenu – SatA

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