2013-07-24 20 views
5

Ví dụ sẽ là nếu tiện ích mở rộng của tôi overrides the newtab page và người dùng cài đặt tiện ích mở rộng khác cũng ghi đè trang newtab. Hiện tại, chỉ có một tiện ích mở rộng newtab hiển thị và thường không phải của tôi.Cách phát hiện khi một Tiện ích mở rộng khác của Chrome ghi đè cùng một trang

Tôi có thể làm gì để phát hiện khi xung đột xảy ra và thông báo cho người dùng về điều đó?

management API không cho tôi biết nếu tiện ích ghi đè bất kỳ trang nào, vì vậy tôi thật không may là không thể sử dụng.

Trả lời

4

Đ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):

  1. 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.

  2. 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/' }] }); 
    
  3. 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.

+2

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 /'}]});' –

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