Leave a Comment
10 html5 API, о которых не все знают
Не самые известные html5 API.
- Element.classList — упрощённое управление CSS-классами из javascript
1234567891011// Add a class to an elementmyElement.classList.add("newClass");// Remove a class to an elementmyElement.classList.remove("existingClass");// Check for existencemyElement.classList.contains("oneClass");// Toggle a classmyElement.classList.toggle("anotherClass"); - ContextMenu API — просто добавляет новые строки в контекстное меню браузера
123456789101112131415<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-
1234567891011121314151617181920/* Assuming element:<div id="myDiv" data-name="myDiv" data-id="myId" data-my-custom-key="This is the value"></div>*/// Get the elementvar element = document.getElementById("myDiv");// Get the idvar id = element.dataset.id;// Retrieves "data-my-custom-key"var customKey = element.dataset.myCustomKey;// Sets the value to something elseelement.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 теперь доступен и в остальных браузерах
123456789101112131415// From window or frame on domain 1, send a message to the iframe which hosts another domainvar iframeWindow = document.getElementById("iframe").contentWindow;iframeWindow.postMessage("Hello from the first window!");// From inside the iframe on different host, receive messagewindow.addEventListener("message", function(event) {// Make sure we trust the sending domainif(event.origin == "http://davidwalsh.name") {// Log out the messageconsole.log(event.data);// Send a message backevent.source.postMessage("Hello back!");}]); - атрибут autofocus — устанавливает курсор ввода на указанный элемент формы при загрузке страницы (pageReady)
-
Fullscreen API — позволяет программно (с разрешения пользователя) запускать страницу в полноэкранном режиме
1234567891011121314// Find the right method, call on correct elementfunction 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 pagelaunchFullScreen(document.getElementById("videoElement")); // any individual element -
Page Visibility API предоставляет события, возникающие при попадании фокуса на этот таб или передаче фокуса другому табу в браузере
123456789101112131415161718192021222324252627// Adapted slightly from Sam Dutton// Set name of hidden property and visibility change event// since some browsers only offer vendor-prefixed supportvar 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 titledocument.addEventListener(visibilityChange, function(e) {// Start or stop processing depending on state}, false); -
getUserMedia API с разрешения пользователя даёт доступ к его камере
123456789101112131415161718192021222324// Put event listeners into placewindow.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 placeif(navigator.getUserMedia) { // Standardnavigator.getUserMedia(videoObj, function(stream) {video.src = stream;video.play();}, errBack);} else if(navigator.webkitGetUserMedia) { // WebKit-prefixednavigator.webkitGetUserMedia(videoObj, function(stream){video.src = window.webkitURL.createObjectURL(stream);video.play();}, errBack);}}, false); - Battery API для доступа к уровню заряда и статусу батареи
123456789101112// Get the battery!var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery;// A few useful battery propertiesconsole.warn("Battery charging: ", battery.charging); // trueconsole.warn("Battery level: ", battery.level); // 0.58console.warn("Battery discharging time: ", battery.dischargingTime);// Add a few event listenersbattery.addEventListener("chargingchange", function(e) {console.warn("Battery charge change: ", battery.charging);}, false); - Link Prefetching позволяет подсказать браузеру, документ по какой ссылке желательно предзагрузить
12345<!-- 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
Similar Posts
- None Found
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.