Leave a Comment
10 html5 API, о которых не все знают
Не самые известные html5 API.
- Element.classList — упрощённое управление CSS-классами из javascript
// Add a class to an element myElement.classList.add("newClass"); // Remove a class to an element myElement.classList.remove("existingClass"); // Check for existence myElement.classList.contains("oneClass"); // Toggle a class myElement.classList.toggle("anotherClass"); - ContextMenu API — просто добавляет новые строки в контекстное меню браузера
<section contextmenu="mymenu"> <!-- For the purpose of cleanliness, I'll put my menu inside the element that will use it --> <!-- add the menu --> <menu type="context" id="mymenu"> <menuitem label="Refresh Post" onclick="window.location.reload();" icon="/images/refresh-icon.png"></menuitem> <menu label="Share on..." icon="/images/share_icon.gif"> <menuitem label="Twitter" icon="/images/twitter_icon.gif" onclick="goTo('//twitter.com/intent/tweet?text=' + document.title + ': ' + window.location.href);"></menuitem> <menuitem label="Facebook" icon="/images/facebook_icon16x16.gif" onclick="goTo('//facebook.com/sharer/sharer.php?u=' + window.location.href);"></menuitem> </menu> </menu> </section> -
Element.dataset — позволяет устанавливать атрибуты data-
/* Assuming element: <div id="myDiv" data-name="myDiv" data-id="myId" data-my-custom-key="This is the value"></div> */ // Get the element var element = document.getElementById("myDiv"); // Get the id var id = element.dataset.id; // Retrieves "data-my-custom-key" var customKey = element.dataset.myCustomKey; // Sets the value to something else element.dataset.myCustomKey = "Some other value"; // Element becomes: // <div id="myDiv" data-name="myDiv" data-id="myId" data-my-custom-key="Some other value"></div> - window.postMessage API — API для обмена строковыми сообщениями с IFRAME из IE8 теперь доступен и в остальных браузерах
// From window or frame on domain 1, send a message to the iframe which hosts another domain var iframeWindow = document.getElementById("iframe").contentWindow; iframeWindow.postMessage("Hello from the first window!"); // From inside the iframe on different host, receive message window.addEventListener("message", function(event) { // Make sure we trust the sending domain if(event.origin == "http://davidwalsh.name") { // Log out the message console.log(event.data); // Send a message back event.source.postMessage("Hello back!"); } ]); - атрибут autofocus — устанавливает курсор ввода на указанный элемент формы при загрузке страницы (pageReady)
-
Fullscreen API — позволяет программно (с разрешения пользователя) запускать страницу в полноэкранном режиме
// Find the right method, call on correct element function launchFullScreen(element) { if(element.requestFullScreen) { element.requestFullScreen(); } else if(element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if(element.webkitRequestFullScreen) { element.webkitRequestFullScreen(); } } // Launch fullscreen for browsers that support it! launchFullScreen(document.documentElement); // the whole page launchFullScreen(document.getElementById("videoElement")); // any individual element -
Page Visibility API предоставляет события, возникающие при попадании фокуса на этот таб или передаче фокуса другому табу в браузере
// Adapted slightly from Sam Dutton // Set name of hidden property and visibility change event // since some browsers only offer vendor-prefixed support var hidden, state, visibilityChange; if (typeof document.hidden !== "undefined") { hidden = "hidden"; visibilityChange = "visibilitychange"; state = "visibilityState"; } else if (typeof document.mozHidden !== "undefined") { hidden = "mozHidden"; visibilityChange = "mozvisibilitychange"; state = "mozVisibilityState"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; state = "msVisibilityState"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; state = "webkitVisibilityState"; } // Add a listener that constantly changes the title document.addEventListener(visibilityChange, function(e) { // Start or stop processing depending on state }, false); -
getUserMedia API с разрешения пользователя даёт доступ к его камере
// Put event listeners into place window.addEventListener("DOMContentLoaded", function() { // Grab elements, create settings, etc. var canvas = document.getElementById("canvas"), context = canvas.getContext("2d"), video = document.getElementById("video"), videoObj = { "video": true }, errBack = function(error) { console.log("Video capture error: ", error.code); }; // Put video listeners into place if(navigator.getUserMedia) { // Standard navigator.getUserMedia(videoObj, function(stream) { video.src = stream; video.play(); }, errBack); } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed navigator.webkitGetUserMedia(videoObj, function(stream){ video.src = window.webkitURL.createObjectURL(stream); video.play(); }, errBack); } }, false); - Battery API для доступа к уровню заряда и статусу батареи
// Get the battery! var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery; // A few useful battery properties console.warn("Battery charging: ", battery.charging); // true console.warn("Battery level: ", battery.level); // 0.58 console.warn("Battery discharging time: ", battery.dischargingTime); // Add a few event listeners battery.addEventListener("chargingchange", function(e) { console.warn("Battery charge change: ", battery.charging); }, false); - Link Prefetching позволяет подсказать браузеру, документ по какой ссылке желательно предзагрузить
<!-- full page --> <link rel="prefetch" href="http://davidwalsh.name/css-enhancements-user-experience" /> <!-- just an image --> <link rel="prefetch" href="http://davidwalsh.name/wp-content/themes/walshbook3/images/sprite.png" />
Подробнее —
http://davidwalsh.name/html5-apis
и
http://davidwalsh.name/more-html5-apis
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.