Приложение

Марк Пилгрим

Оригинал: http://diveintohtml5.info/everything.html

Перевод: Влад Мержевич

Почти алфавитный не ерундовый справочник по определению всего

Затруднения? Прочитайте Проверка технологий HTML5 для знакомства с основами. Хотите вместо этого библиотеку все-в-одном? Попробуйте Modernizr.

<audio>

return !!document.createElement('audio').canPlayType;

<audio> в формате MP3

var a = document.createElement('audio');
return !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, ''));

<audio> в формате Vorbis

var a = document.createElement('audio');
return !!(a.canPlayType && a.canPlayType('audio/ogg; codecs="vorbis"').replace(/no/, ''));

<audio> в формате WAV

var a = document.createElement('audio');
return !!(a.canPlayType && a.canPlayType('audio/wav; codecs="1"').replace(/no/, ''));

<audio> в формате AAC

var a = document.createElement('audio');
return !!(a.canPlayType && a.canPlayType('audio/mp4; codecs="mp4a.40.2"').replace(/no/, ''));

<canvas>

return !!document.createElement('canvas').getContext;

<canvas> API текста

var c = document.createElement('canvas');
return c.getContext && typeof c.getContext('2d').fillText == 'function';

<command>

return 'type' in document.createElement('command');

<datalist>

return 'options' in document.createElement('datalist');

<details>

return 'open' in document.createElement('details');

<device>

return 'type' in document.createElement('device');

<form> без валидации

return 'noValidate' in document.createElement('form');

<iframe sandbox>

return 'sandbox' in document.createElement('iframe');

<iframe srcdoc>

return 'srcdoc' in document.createElement('iframe');

<input autofocus>

return 'autofocus' in document.createElement('input');

<input placeholder>

return 'placeholder' in document.createElement('input');

<textarea placeholder>

return 'placeholder' in document.createElement('textarea');

<input type="color">

var i = document.createElement('input');
i.setAttribute('type', 'color');
return i.type !== 'text';

<input type="email">

var i = document.createElement('input');
i.setAttribute('type', 'email');
return i.type !== 'text';

<input type="number">

var i = document.createElement('input');
i.setAttribute('type', 'number');
return i.type !== 'text';

<input type="range">

var i = document.createElement('input');
i.setAttribute('type', 'range');
return i.type !== 'text';

<input type="search">

var i = document.createElement('input');
i.setAttribute('type', 'search');
return i.type !== 'text';

<input type="tel">

var i = document.createElement('input');
i.setAttribute('type', 'tel');
return i.type !== 'text';

<input type="url">

var i = document.createElement('input');
i.setAttribute('type', 'url');
return i.type !== 'text';

<input type="date">

var i = document.createElement('input');
i.setAttribute('type', 'date');
return i.type !== 'text';

<input type="time">

var i = document.createElement('input');
i.setAttribute('type', 'time');
return i.type !== 'text';

<input type="datetime">

var i = document.createElement('input');
i.setAttribute('type', 'datetime');
return i.type !== 'text';

<input type="datetime-local">

var i = document.createElement('input');
i.setAttribute('type', 'datetime-local);
return i.type !== 'text';

<input type="month">

var i = document.createElement('input');
i.setAttribute('type', 'month');
return i.type !== 'text';

<input type="week">

var i = document.createElement('input');
i.setAttribute('type', 'week');
return i.type !== 'text';

<meter>

return 'value' in document.createElement('meter');

<output>

return 'value' in document.createElement('output');

<progress>

return 'value' in document.createElement('progress');

<time>

return 'valueAsDate' in document.createElement('time');

<video>

return !!document.createElement('video').canPlayType;

<video> заголовки

return 'src' in document.createElement('track');

<video poster>

return 'poster' in document.createElement('video');

<video> в формате WebM

var v = document.createElement('video');
return !!(v.canPlayType && v.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/no/, ''));

<video> в формате H.264

var v = document.createElement('video');
return !!(v.canPlayType && v.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, ''));

<video> в формате Theora

var v = document.createElement('video');
return !!(v.canPlayType && v.canPlayType('video/ogg; codecs="theora"').replace(/no/, ''));

contentEditable (редактируемый контент)

return 'isContentEditable' in document.createElement('span');

Междокументные сообщения

return !!window.postMessage;

Перетащи-и-брось

return 'draggable' in document.createElement('span');

API файла

return typeof FileReader != 'undefined';

Геолокация

return !!navigator.geolocation;

Журнал

return !!(window.history && window.history.pushState);

Локальное хранилище

try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch(e) {
return false;
}

Микроданные

return !!document.getItems;

Оффлайновые веб-приложения

return !!window.applicationCache;

Серверные события

return typeof EventSource !== 'undefined';

Хранилище сессий

try {
return 'sessionStorage' in window && window['sessionStorage'] !== null;
} catch(e) {
return false;
}

SVG

return !!(document.createElementNS && document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect);

SVG в text/htm

var e = document.createElement('div');
e.innerHTML = '<svg></svg>';
return !!(window.SVGSVGElement && e.firstChild instanceof window.SVGSVGElement);

Отмена

return typeof UndoManager !== 'undefined';

IndexedDB

return !!window.indexedDB;

Web Sockets

return !!window.WebSocket;

Web SQL Database

return !!window.openDatabase;

Фоновые вычисления (Web Workers)

return !!window.Worker;

XMLHttpRequest: междоменные запросы

return "withCredentials" in new XMLHttpRequest;

XMLHttpRequest: отправка данных формы

return !!window.FormData;

XMLHttpRequest: события загрузки

return "upload" in new XMLHttpRequest;

Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.