Я пытаюсь создать расширение для браузера Chrome, которое отобразит уровень заряда батареи системы (и сделает пару других вещей) с помощью BatteryStatusAPI. Сначала я просто пытаюсь отобразите уровень заряда батареи с помощью простого холста, но он, похоже, не работает.BatteryStatus API для расширений Chrome не работает
манифеста:
{
"manifest_version": 2,
"name": "Battery",
"description": "This extension shows the battery stats of the current device.",
"version": "1.0",
"browser_action": {
"default_icon": "battery_full.png",
"default_title": "Click Here!"
},
"background": {
"scripts": ["icon_changer.js"]
}
}
JavaScript:
var battery;
navigator.getBattery()
.then(function (b) {
battery = b;
}
);
function drawIcon() {
var clockCanvas = document.createElement("canvas");
clockCanvas.height = 19;
clockCanvas.width = 19;
var clockContext = clockCanvas.getContext("2d");
clockContext.textAlign = "center";
clockContext.textBaseline = "middle";
clockContext.font = "9px Arial";
clockContext.fillText(battery.level, 9, 10);
chrome.browserAction.setIcon({
imageData: clockContext.getImageData(0, 0, 19, 19)
});
}
drawIcon();
Как вы думаете, проблема?
Какова ценность функции b внутри функции обратного вызова? Добавьте 'console.log (b);' там. И прочитайте https://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of-a-function-asynchron – rsanchez
'Uncaught ReferenceError: b не определен '. Прочитав об асинхронном потоке, я до сих пор не понимаю, почему «getBattery()» не выполняется, как и весь асинхронный код. – galah92
Нет, я имею в виду внутри 'function (b) {...}'. – rsanchez