2012-05-07 57 views
34

Tôi đang cố gắng viết một hàm JavaScript sẽ mở tiện ích mở rộng của tôi giống như khi biểu tượng tiện ích mở rộng được nhấp. Tôi biết cách mở tiện ích mở rộng của mình trong tab mới:Tôi làm cách nào để mở cửa sổ bật lên của tiện ích mở rộng bằng JavaScript?

var url = "chrome-extension://kelodmiboakdjlbcdfoceeiafckgojel/login.html"; 
window.open(url); 

Nhưng tôi muốn mở cửa sổ bật lên ở góc trên bên phải của trình duyệt, như khi nhấp vào biểu tượng tiện ích mở rộng.

+5

Tôi nghĩ rằng điều này không thể thực hiện được - Chrome chỉ cho phép mở cửa sổ bật lên của tiện ích mở rộng theo hành động của người dùng. –

+1

Bản sao của [(Tiện ích mở rộng của Chrome) Cách thực tế mở cửa sổ bật lên từ background.html] (http://stackoverflow.com/questions/5544256/chrome-extensionhow-to-pragmatically-open-the-popup-window-from -background-htm) –

+0

Một cách tiếp cận có thể hoạt động sẽ là thiết lập phím tắt cho cửa sổ bật lên trong tệp kê khai của tiện ích, sau đó sử dụng tệp thi hành để kích hoạt giả tạo phím tắt đó giả tạo. Xem [Nhắn tin gốc] (https://developer.chrome.com/extensions/nativeMessaging) để biết thêm thông tin về cách liên lạc với tệp thi hành từ tiện ích mở rộng. – Miscreant

Trả lời

26

Nhóm dev Chromium đã cho biết rõ ràng rằng họ sẽ không bật chức năng này. Xem Feature request: open extension popup bubble programmatically:

Triết lý cho cửa sổ bật lên trình duyệt và hành động trang là chúng phải được kích hoạt bởi hành động của người dùng. Đề xuất của chúng tôi là sử dụng tính năng thông báo html mới ...

Desktop notifications có thể được sử dụng để trình bày cho người dùng một trang HTML nhỏ giống như cửa sổ bật lên của bạn. Nó không phải là một sự thay thế hoàn hảo, nhưng nó có thể cung cấp loại chức năng bạn cần.

+2

Bằng cách nào đó có thể với tiện ích mở rộng Google Cast của Google. –

6

Câu trả lời ngắn gọn là bạn không thể mở browserAction theo chương trình. Nhưng bạn có thể tạo dialog bằng tập lệnh nội dung mô phỏng số browserAction và hiển thị ký tự đó (không có lập trình). Tuy nhiên, bạn sẽ không thể truy cập vào tiện ích mở rộng của mình theo số background page từ cửa sổ bật lên này ngay khi có thể từ số popup.html. Bạn sẽ phải thay đổi số điện thoại pass message.

+0

Bạn có thể cung cấp một chút ví dụ về mã ở đây không? Tạo một hộp thoại? cảnh báo ("blah")? không hoạt động. Tôi dường như không thể làm bất cứ điều gì để làm việc mà không cần nhấp vào biểu tượng tiện ích. – edencorbin

+0

Có, có vẻ như hầu hết các tiện ích mở rộng "bắt chước" có cửa sổ bật lên xuất hiện bằng cách tạo một div nổi "ở phía trên bên phải" của cửa sổ trình duyệt hiện tại của bạn * trông * như nó đến từ tiện ích mở rộng của bạn vì nó nằm gần biểu tượng , và văn bản biểu tượng thay đổi để phù hợp, v.v. Nhưng nó không, nó chỉ là một div chèn ... xem thêm https://stackoverflow.com/questions/5544256/chrome-extensionhow-to-pragmatically-open-the -popup-window-from-background-htm – rogerdpack

17

Nhóm Chrome đã làm tạo phương pháp để mở cửa sổ bật lên theo chương trình, nhưng nó chỉ được bật dưới dạng API riêng và plans to make it generally available have stalled do lo ngại về bảo mật.

Vì vậy, tính đến tháng 3 năm 2018, bạn vẫn không thể làm điều đó.

+1

Tháng 9 năm 2016 - vẫn không thể. – kspearrin

+1

Tháng 10 năm 2016 - vẫn không thể – ShrekOverflow

+1

Tháng 12 năm 2016 -. Vẫn không thể – drets

-3

Tôi có cùng yêu cầu: Khi người dùng nhấp vào biểu tượng tiện ích, cửa sổ bật lên nhỏ sẽ mở ra. Trong trường hợp của tôi, tôi đã viết một phần mở rộng sẽ cung cấp thông tin cập nhật về các cổ phiếu có chọn lọc bất cứ khi nào biểu tượng được nhấp. Đây là cách popup của tôi nhìn.

enter image description here

Nếu bạn đã có yêu cầu tương tự thì xin vui lòng đọc các câu trả lời dưới đây.

Đây là cách xem tệp manifest.json của tôi.

enter image description here

Tất cả các nâng nặng đã được xử lý bằng cách chỉ manifest.json tập tin. Có một phần browser_action bên trong có một khóa gọi là default_popup, chỉ cần đặt tên của tệp HTML mà bạn muốn cửa sổ bật lên hiển thị.

Tôi muốn tiện ích của mình hoạt động trên tất cả các trang đó là lý do tôi thêm thuộc tính matches dưới content_scripts. Tôi thực sự không cần phải đặt tệp jquery jquery-3.2.1.js bên trong mảng js nhưng trình quản lý tiện ích không cho phép tôi giữ trống mảng đó.

Hy vọng điều này sẽ giúp, hãy bình luận nếu bạn có bất kỳ nghi ngờ nào về câu trả lời.

+0

nghe như bạn vừa mô tả hành vi mở rộng vanilla bình thường: nhấp vào biểu tượng và cửa sổ bật lên mở ra Câu hỏi ở đây là cách mở cùng một cửa sổ bật lên đó và các câu trả lời khác có vẻ khá hoàn chỉnh. –

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