рдПрдЪрдЯреАрдПрдордПрд▓ 5: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ

рдПрдЪрдЯреАрдПрдордПрд▓ 5 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рднрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдкреАрдЖрдИ рдзреАрд░реЗ-рдзреАрд░реЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЙрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдирд╡реАрдирддрдо рдореЗрдВ рд╕реЗ рдПрдХ рдмреИрдЯрд░реА рд╕реНрдерд┐рддрд┐ рдПрдкреАрдЖрдИ рд╣реИ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдкреАрдЖрдИ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреИрдЯрд░реА рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддреЛ рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдкреЗрдЬ рдкрд░ рднрд╛рд░реА рдПрдиреАрдореЗрд╢рди рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдВред рдЖрдк рдпрд╣рд╛рдВ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдкреЗрдЬ рдЦреЛрд▓рд╛ рддреЛ "рдмреИрдЯрд░реА рдЯрд╛рдЗрдо рдмрдЪреЗ" рдкреНрд░реЙрдкрд░реНрдЯреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереАред рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЧрдпрд╛ред

рдореИрдВрдиреЗ рдореЛрдЬрд╝рд┐рд▓рд╛ рдХреЗ рдирд╡реАрдирддрдо рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЕрднреА рддрдХ рдореИрдХ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕, рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рдореБрдЭреЗ рдЪрд╛рд░реНрдЬрд┐рдВрдЧ рд╕реНрдЯреЗрдЯрд╕ рдХрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рдХрд╛ рд╕рдордп рдФрд░ рдмреИрдЯрд░реА рд╕реНрддрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдмрд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреГрд╖реНрда рдкрд░ рдПрдкреАрдЖрдИ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдпрд╣ рдПрдХ (рдореЗрд░реЗ рдЯреИрдмрд▓реЗрдЯ рд╕реЗ рд╕реНрдХреНрд░реАрди):



рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:


рдЖрдЗрдП рдПрдкреАрдЖрдИ рдХреЗ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдЪрдп рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдмреИрдЯрд░реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ - рдПрдкреАрдЖрдИ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рдЧреБрдг рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ (рдХрд▓реНрдкрдирд╛ рд╕реЗ) рд╣реИрдВ:

[NoInterfaceObject] interface BatteryManager : EventTarget { readonly attribute boolean charging; readonly attribute double chargingTime; readonly attribute double dischargingTime; readonly attribute double level; }; 

рдЪрд╛рд░реНрдЬрд┐рдВрдЧ рдкреНрд░реЙрдкрд░реНрдЯреА рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд░реНрдЬрд┐рдВрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВ, рдЪрд╛рд░реНрдЬрдЯрд╛рдЗрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд╛рд░реНрдЬ рд╣реЛрдиреЗ рддрдХ рд╢реЗрд╖ рд╕рдордп рдХрд╛ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬрд┐рдВрдЧ рдЯрд╛рдЗрдо рддрдм рддрдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рди рд╣реЛ рдЬрд╛рдП, рдФрд░ рд▓реЗрд╡рд▓ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХрд┐рддрдиреЗ рдкреНрд░рддрд┐рд╢рдд рдХрд╛ рдЪрд╛рд░реНрдЬ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝рд╛ рд╣реИред рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

рдЗрди рдЧреБрдгреЛрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, API рдХрдИ рдХреЙрд▓рдмреИрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
 [TreatNonCallableAsNull] attribute Function? onchargingchange; [TreatNonCallableAsNull] attribute Function? onchargingtimechange; [TreatNonCallableAsNull] attribute Function? ondischargingtimechange; [TreatNonCallableAsNull] attribute Function? onlevelchange; 

рдЖрдк рдЗрди рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рд░ рдмрд╛рд░ рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред

рдПрдкреАрдЖрдИ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдмрдирд╛рдирд╛


рдЖрдЗрдП рдХреБрдЫ рд╕рд░рд▓ рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬрд┐рдирдореЗрдВ рд╣рдо рдмреИрдЯрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд HTML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 <div id="box"> <div id="battery"></div> <div id="text"> <span style="display: block;margin-bottom:15px;font-size: xx-large;"><strong>Battery specifications</strong></span> <span style="display: block" id="level">Battery level: unknown</span> <span style="display: block" id="status">Charging status: unknown</span> <span style="display: block" id="charged">Battery charged: unknown</span> </div> </div> 

рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

 // get the battery information var battery = navigator.mozBattery; // get the battery information to be displayed $('#level').text("Battery level: " + Math.round(battery.level * 100) + "%"); $('#status').text("Charging status: " + ((battery.charging) ? "true" : "false")); if (battery.charging) { $('#charged').text("Battery time to charge: " + battery.chargingTime); } else { $('#charged').text("Battery time left: " + (Math.round(battery.dischargingTime / 60)) + " minutes"); } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдХрд╣реАрдВ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рд╣рдо рдмреИрдЯрд░реА рд╕реНрддрд░ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдмреИрдЯрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛


рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдмрд╛рдК рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЕрднреА рднреА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦреЗрдВ ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреИрдЯрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ (рдиреЛрдХрд┐рдпрд╛ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдмрдирд╛рдпрд╛ рдФрд░ рдЕрдкрдбреЗрдЯрдмреИрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдореИрдВ рдмреИрдЯрд░реА рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 var b = new Battery("assets/bat_empty.png", "assets/bat_full.png", 96, 168); $("#battery").append(b.domElement); b.updateBattery(battery.level * 100); 

рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП EventListener рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдВрдд рдореЗрдВ, рдмреИрдЯрд░реА рдЧреБрдгреЛрдВ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ EventListeners рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдЬреЛрдбрд╝реЗрдВ:

 // when the loader is connected battery.addEventListener("chargingchange", function (e) { $('#status').text("Charging status: " + ((battery.charging) ? "true" : "false")); }, false); // when charging time changes update the time to charge / time left battery.addEventListener("chargingtimechange", function (e) { if (battery.charging) { $('#charged').text("Battery time to charge: " + battery.chargingTime); } else { $('#charged').text("Battery time left: " + (Math.round(battery.dischargingTime / 60)) + " minutes"); } }, false); // when dischargingtime changes update the time to charge / time left battery.addEventListener("dischargingtimechange", function (e) { if (battery.charging) { $('#charged').text("Battery time to charge: " + (Math.round(battery.dischargingTime / 60)) + " minutes"); } else { $('#charged').text("Battery time left: " + (Math.round(battery.dischargingTime / 60)) + " minutes"); } }, false); // listener that is notified when the level changes battery.addEventListener("levelchange", function (e) { $('#level').text("Battery level: " + Math.round(battery.level * 100) + "%"); b.updateBattery(100 * battery.level) }, false); 

рдмрд╕ рд╕рд╣реА рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



Windows рдкрд░ (VM рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ), рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

Source: https://habr.com/ru/post/In145608/


All Articles