我在生產中有一個Google Chrome擴展。該程序的一部分通過chrome.notifications API顯示通知。我開始顯示此邏輯的通知:chrome.notifications undefined間歇性地
// Expects options: { iconUrl: string, title: string, message: string }
showNotification: function (options) {
// TODO: Future version of Google Chrome will support permission levels on notifications.
if (chrome.notifications.getPermissionLevel) {
chrome.notifications.getPermissionLevel(function (permissionLevel) {
if (permissionLevel === 'granted') {
doShowNotification(options);
}
});
} else {
doShowNotification(options);
}
}
此邏輯工作正常。 getPermissionLevel函數尚未實現,但將在未來實現。所以,我檢查一下是否已經實施,如果沒有,只是顯示通知。
我在某些客戶端看到錯誤。該錯誤消息指出chrome.notifications上以下行未定義:
if (chrome.notifications.getPermissionLevel) {
與錯誤消息:
Uncaught TypeError: Cannot read property 'getPermissionLevel' of undefined
這很奇怪,因爲此代碼的工作對我來說完全沒有問題,我的測試用例通過,等等。另外,我在我的manifest.json以下規則:
"minimum_chrome_version": "29.0.1547.76"
這應該強制所有客戶端使用一個版本的谷歌瀏覽器的支持通知。根據該文件,http://developer.chrome.com/extensions/notifications.html,通知在Chrome 28穩定去:
Availability: Stable since Chrome 28.
另外,我有以下權限聲明:
"permissions": [
"contextMenus",
"management",
"notifications",
"storage",
"identity",
"webRequest",
"webRequestBlocking"
]
我請求通知特權和我確保用戶正在使用當前的瀏覽器版本。
有沒有人知道任何其他原因chrome.notifications將被定義?我知道我可以簡單地確保它被定義,但我想知道發生了什麼。謝謝。
這聽起來非常合理。謝謝。我會在今天進行調查,一旦我確認我會接受評論。 –