Tôi đang phát triển tiện ích cho Google Chrome. Kịch bản nền của tôi, mọi lúc, cho phép trên máy chủ sử dụng API XMPP và đăng ký một nút PubSub. Tôi cần phải hủy đăng ký trên lối ra, nếu không đăng ký giả sẽ vẫn còn trên máy chủ. Có bất kỳ sự kiện onBrowserClose
nào trong API tiện ích mở rộng của Google Chrome không?Sự kiện onBrowserĐóng góp cho tiện ích mở rộng của Google Chrome?
Trả lời
Không có sự kiện như vậy trong API tiện ích của Chrome.
Tuy nhiên, sự kiện chrome.windows.onRemoved
kích hoạt mỗi khi cửa sổ đóng. Tôi cho rằng bạn có thể kiểm tra sự kiện này nếu bạn đóng cửa sổ cuối cùng, nhưng không may là do bản chất không đồng bộ của Chrome này không hoạt động.
Tôi đã thử chạy một yêu cầu AJAX đơn giản trong trình xử lý sự kiện onRemoved
. Yêu cầu AJAX không bao giờ đến máy chủ, vì Chrome đã đóng trước khi chạy sự kiện (hoặc chỉ bỏ qua nó).
Đặt câu trả lời cuối cùng là: Không, hiện tại bạn không thể, theo như tôi biết. Bạn có thể muốn sao báo cáo lỗi sau tại số http://crbug.com/30885 để được chú ý khi cập nhật.
Cảm ơn bạn đã trả lời, thực sự tôi quyết định theo học trường cũ, chỉ cần lưu thông tin đăng ký trước đó vào localstorage và hủy đăng ký khi kịch bản nền được tải lại =) – simple
Thêm sự kiện đóng trình duyệt là một yêu cầu khá thường xuyên. Star http://crbug.com/30885 để cập nhật. Và đọc báo cáo lỗi cho một thông minh hack để phát hiện khi trình duyệt được tắt thông qua một phím bấm.
Nếu bạn gặp trường hợp khi số lượng tab đang mở bằng 0, bạn có thể coi đó là sự kiện Chrome onClose. Trong trường hợp của tôi, tôi phải hủy thông báo trên màn hình trước khi Chrome đóng vì nó đã bị lỗi. Đây là cách tôi đã làm nó:
1. Khởi tạo một NUM_TABS biến bằng cách sử dụng như sau:chrome.tabs.getAllInWindow(null, function(tabs){
console.log("Initial tab count: " + tabs.length);
num_tabs = tabs.length;
});
2. NUM_TABS Tăng khi một tab được tạo ra:
chrome.tabs.onCreated.addListener(function(tab){
num_tabs++;
console.log("Tab created event caught. Open tabs #: " + num_tabs);
});
3. Decrement num_tabs khi tab bị xóa và chạy trình duyệt của bạn trên trình xử lý sự kiện nếu num_tabs = 0
chrome.tabs.onRemoved.addListener(function(tabId){
num_tabs--;
console.log("Tab removed event caught. Open tabs #: " + num_tabs);
if(num_tabs == 0)
notification.cancel();
});
Điều này có làm việc ngay cả khi tính chất không đồng bộ của chrome không? –
Nếu trình duyệt của bạn có tiện ích mở rộng có quyền "nền", hãy tham khảo phần này -> https://developer.chrome.com/extensions/declare_permissions, chrome sẽ không bị thoát ngay cả khi bạn cho rằng nó có. Bạn phải dứt khoát chấm dứt quá trình hoặc buộc bỏ hoặc một cái gì đó. – ankitG
một này làm việc cho tôi:
chrome.windows.onRemoved.addListener(function(windowId){
alert("!! Exiting the Browser !!");
});
Phải mất chrome.windows
hơn chrome.tabs
.
Bạn có thể có nhiều cửa sổ Chrome và thao tác này sẽ kích hoạt mỗi khi một số cửa sổ đóng, không chỉ trên cửa sổ cuối cùng đóng. – s3m3n
TL; DR: Hãy thử sự kiện window.onunload
, nó hoạt động trong một số trường hợp.
Như đã đề cập trước đây, chúng tôi thường không thể xử lý một sự kiện như sự kiện onBrowserClose
và ngăn trình duyệt đóng lại. Nhưng đối với một số trường hợp, chúng tôi có thể sử dụng sự kiện window.onunload
để làm điều gì đó đồng bộ và nó hoạt động nếu thực sự đồng bộ.
Từ kinh nghiệm của tôi, bạn có thể ít nhất là:
- Lưu một số thông tin trong (ví dụ bản ghi) trong HTML5
localStorage
(đó là đồng bộ). - Gọi một số không đồng bộ chức năng API mở rộng chrome nhưng bạn không thể nhận được kết quả. (Nó hoạt động cho tôi! Yay!)
- Thực hiện đồng bộ XMLHTTPRequest (vâng, đôi khi nó hoạt động).
- 1. Sự kiện onbeforeunload có kích hoạt cho popup.html trong tiện ích mở rộng google chrome không?
- 2. Tiện ích mở rộng của Google Chrome - Truy cập DOM
- 3. Tiện ích mở rộng của Google Chrome với OAuth
- 4. Tiện ích mở rộng của Google Chrome - tập lệnh nền
- 5. Tiện ích mở rộng của Chrome + Dart
- 6. Chuyển đổi Tiện ích mở rộng của Google Chrome sang tiện ích mở rộng của Firefox hoặc Safari
- 7. bảo mật mã trong tiện ích mở rộng google chrome
- 8. Cách tạo tiện ích mở rộng chrome như Google Hangouts
- 9. Tiện ích mở rộng của Chrome cho Amazon Cloud
- 10. Nhúng hình ảnh vào tiện ích mở rộng của Chrome
- 11. Tiện ích mở rộng của Chrome: kích hoạt sự kiện khi phần tử được tạo?
- 12. Tiện ích mở rộng của Google Chrome cho Nhấp một lần?
- 13. Tiêm CSS cho tiện ích mở rộng chrome
- 14. Tiện ích mở rộng của Google Chrome - đợi cho đến khi tải trang
- 15. Tiện ích mở rộng Google Cast cho Google Chrome có hỗ trợ 1080p không?
- 16. là tiện ích mở rộng của google chrome, nguồn mở hay không?
- 17. Tiện ích mở rộng của Google Chrome: đánh dấu div mà chuột đang di chuột qua
- 18. Tiện ích mở rộng của Google Chrome - Cửa sổ bật lên có lập trình mở
- 19. Tiện ích mở rộng của Chrome: ví bitcoin
- 20. SWFobject trong Tiện ích mở rộng của Chrome - API Unavaiable
- 21. Làm mẫu Mustache.js trong tiện ích mở rộng của Chrome
- 22. Tiện ích mở rộng của Chrome: biểu tượng tiện ích mở rộng onclick, mở popup.html trong tab mới
- 23. RequireJS trong tiện ích mở rộng của Chrome
- 24. Thêm NaCl vào Tiện ích mở rộng của Chrome
- 25. Mã hóa tiện ích mở rộng của Chrome?
- 26. Tiện ích mở rộng của Chrome: Cách tạo?
- 27. Tiện ích mở rộng của Chrome - Hình ảnh của tiện ích mở rộng trên Trang cài đặt
- 28. Tiện ích mở rộng của Google chrome: bộ nhớ cục bộ
- 29. Tránh tải lại tiện ích Google Chrome
- 30. Tiện ích mở rộng của Chrome + Devise + Rails App - Đặt yêu cầu được xác thực từ tiện ích mở rộng?
Hãy nhớ rằng có nhiều cách khác để trình duyệt thoát, bao gồm cả tắt nguồn và lỗi. Ngay cả khi có một cách đáng tin cậy 100% để kiểm tra trình duyệt thoát bình thường, bạn vẫn có lỗ hổng. –