2012-10-11 6 views
15

Có cách nào để phát hiện xem tôi đang chạy tiện ích mở rộng được cài đặt từ tệp .crx của tôi hay tiện ích mở rộng đã được tải như thông qua nút 'Tải tiện ích mở rộng chưa giải nén ...'?Kiểm tra xem tiện ích mở rộng của Chrome có được cài đặt ở chế độ chưa được đóng gói

Tôi biết về sự khác biệt ID trong trường hợp đó, nhưng tôi không muốn dựa vào các chuỗi được mã hóa cứng trong mã.

Trả lời

17

Nếu bằng "cài đặt từ tệp .crx" của mình, nghĩa là bạn đã cài đặt từ Cửa hàng Chrome trực tuyến, bạn có thể chỉ cần kiểm tra tiện ích manifest.json với giá trị thuộc tính update_url. CWS thêm nó khi bạn tải lên phần mở rộng của bạn.

Nếu bạn có tệp tự lưu trữ .crx, hãy lấy thông tin tiện ích của bạn bằng cách sử dụng chrome.management.getSelf() và kiểm tra installType đối tượng trả về ExtensionInfo. Nếu nó nói "development" điều đó có nghĩa là tiện ích mở rộng đã được tải giải nén trong chế độ nhà phát triển. "normal" có nghĩa là nó đã được cài đặt từ .crx tệp.

+3

Chrome đã giới thiệu 'chrome.management.getSelf' phù hợp hơn cho mục đích này. – Xan

18

Đây là một mẫu mã như thế nào để làm điều này:

function isDevMode() { 
    return !('update_url' in chrome.runtime.getManifest()); 
} 

Được sử dụng trong Kuoll Remote Web Debugger

+2

Cách đơn giản hơn nhiều là sử dụng [chrome.runtime.getManifest()] (https://developer.chrome.com/extensions/runtime#method-getManifest). –

+0

Ồ, chắc chắn rồi. Đã sửa. –

1

Bạn có thể kiểm tra xem một phần mở rộng đang chạy trong chế độ nhà phát triển (ví dụ giải nén) bằng cách kiểm tra nếu nó chứa update_url thuộc tính trong tệp kê khai của nó. Điều này dựa trên tệp kê khai của tiện ích mở rộng chưa được giải nén không phải chứa số update_url. The attribute will be automatically added when publishing via the Chrome Developer Dashboard.

const IS_DEV_MODE = !('update_url' in chrome.runtime.getManifest()); 

function debugLog(str) { 
    if (IS_DEV_MODE) console.log(str); 
} 

debugLog('This only appears in developer mode');