Điều này dường như không phải là một tính năng cũ của API. Tôi muốn đề nghị bạn mở một lỗi tại http://crbug.com.
Nếu không được, bạn có thể thực hiện việc hack sau khó chịu (mà tôi đã không kiểm tra):
Có trang tab mới của bạn gửi một thông điệp tới trang nền của bạn bất cứ khi nào nó tải.
Nghe chrome.webNavigation.onBeforeNavigate
sự kiện mà đối phó với chrome://newtab
:
chrome.webNavigation.onBeforeNavigate.addListener(function(details) {
/* send message */
}, { url: [{ urlEquals: 'chrome://newtab/' }] });
Khi webNavigation
thấy tải trình duyệt chrome://newtab
nhưng bạn không thấy một thông điệp tới trang nền của bạn trong thời gian ngắn sau đó, trang tab mới của bạn có lẽ là không được sử dụng. Từ đó, bạn có thể gửi thông báo hoặc mở một tab/cửa sổ khác bằng thông báo.
Thật không may, điều này yêu cầu sự cho phép webNavigation
, điều không may nếu tiện ích của bạn không cần đến. Cảnh báo mà nó mang ("Phần mở rộng này có thể truy cập vào các tab và hoạt động duyệt web của bạn") có thể làm mất đi một số người dùng tiềm năng, đặc biệt nếu không có lý do gì cho người dùng rõ ràng. (Sau đó, một lần nữa, có lẽ tôi đang quá lạc quan về tính bảo mật-tận tâm của người dùng.) Nếu tiện ích mở rộng của bạn hiện đang sử dụng API tabs
, thì dù sao nó cũng đã mang thông báo này.
API ['chrome.webNavigation'] (https://developer.chrome.com/extensions/webNavigation.html) sẽ phù hợp hơn API' tab'. API này cho phép một bộ lọc khai báo bộ lọc, ví dụ: 'chrome.webNavigation.onBeforeNavigate.addListener (hàm (chi tiết) {/ * làm điều gì đó * /}, {url: [{urlEquals: 'chrome: // newtab /'}]});' –