Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Web APIs que você (provavelmente) não sabia que...
Search
Zeno Rocha
August 06, 2016
Technology
5
950
Web APIs que você (provavelmente) não sabia que existiam
Zeno Rocha
August 06, 2016
Tweet
Share
More Decks by Zeno Rocha
See All by Zeno Rocha
The Next Generation of Developer-First Products
zenorocha
1
660
7 Habits of Highly Productive Developers
zenorocha
1
420
7 Hábitos de Desenvolvedores Altamente Produtivos
zenorocha
1
550
What's new in the Liferay Community
zenorocha
0
710
Launching Liferay Projects Faster with WeDeploy
zenorocha
1
590
How Liferay fits into the real of latest technologies
zenorocha
0
640
Estoicismo e JavaScript
zenorocha
3
1.2k
Por que ninguém se importa com seu novo projeto open source?
zenorocha
2
1.1k
Como investir em... você!
zenorocha
1
590
Other Decks in Technology
See All in Technology
Databricks Free Editionで始めるLakeflow SDP
taka_aki
0
100
みんなでAI上手ピーポーになろう! / Let’s All Get AI-Savvy!
kaminashi
0
100
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
190
善意の活動は、なぜ続かなくなるのか ーふりかえりが"構造を変える判断"になった半年間ー
matsukurou
0
480
1万人を変え日本を変える!!多層構造型ふりかえりの大規模組織変革 / 20260108 Kazuki Mori
shift_evolve
PRO
6
1.3k
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
1.3k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
「アウトプット脳からユーザー価値脳へ」がそんなに簡単にできたら苦労しない #RSGT2026
aki_iinuma
11
5.2k
あの夜、私たちは「人間」に戻った。 ── 災害ユートピア、贈与、そしてアジャイルの再構築 / 20260108 Hiromitsu Akiba
shift_evolve
PRO
0
630
人工知能のための哲学塾 ニューロフィロソフィ篇 第零夜 「ニューロフィロソフィとは何か?」
miyayou
0
440
Node vs Deno vs Bun 〜推しランタイムを見つけよう〜
kamekyame
1
470
ALB「証明書上限問題」からの脱却
nishiokashinji
0
120
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Spectacular Lies of Maps
axbom
PRO
1
430
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
550
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How STYLIGHT went responsive
nonsquared
100
6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
120
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
81
Transcript
não sabia que existiam web apis que você provavelmente @zenorocha
2008
2008
2009
2009
2010
2010
2011
2011
2012
2012
2013
2013
2014
2014
None
canvas svg geolocation local storage web sockets audio video drag
& drop web rtc
page visibility
Provê uma API que checa se a aba atual está
visível ou não no navegador. page visibility
window.addEventListener('visibilitychange', () => { if (document.hidden) { console.log('Tab is hidden');
} else { console.log('Tab is focused'); } }); page visibility
None
window.addEventListener('visibilitychange', () => { switch(document.visibilityState) { case 'prerender': console.log('Tab is
pre-rendering'); break; case 'hidden': console.log('Tab is hidden'); break; case 'visible': console.log('Tab is focused'); break; } });
caniuse.com/#feat=pagevisibility BROWSER support
onde usar?
None
None
state online
Expõe o estado atual de disponibilidade da rede. online state
console.log(navigator.onLine ? 'online' : 'offline') online state
window.addEventListener('offline', networkStatus); window.addEventListener('online', networkStatus); function networkStatus(e) { console.log(e.type); } online
state
caniuse.com/#feat=online-status BROWSER support
None
onde usar?
None
VIBRATION
Provê acesso ao hardware de vibração de dispositivos móveis. vibration
// Vibrate for 1 second navigator.vibrate(1000); // Vibrate with a
pattern navigator.vibrate([400, 300, 300, 200, 500]); // Turn off vibration navigator.vibrate(0); VIBRATION vibrate wait vibrate wait vibrate
// Super Mario navigator.vibrate([125,75,125,275,200,275,125,75,125,27 5,200,600,200,600]); // Star Wars navigator.vibrate([500,110,500,110,450,110,200,110,170, 40,450,110,200,110,170,40,500]);
// Go Go Power Rangers navigator.vibrate([150,150,150,150,75,75,150,150,150,15 0,450]); VIBRATION https://goo.gl/bX4ZQv
caniuse.com/#feat=vibration BROWSER support
onde usar?
None
None
DEVICE orientation
Expõe as coordenadas de orientação física de um dispositivo. device
orientation
device orientation window.addEventListener('deviceorientation', (e) => { console.log(‘Gamma:’, e.gamma); console.log(‘Beta:’, e.beta);
console.log(‘Alpha:’, e.alpha); });
device orientation let logo = document.querySelector(‘img'); window.addEventListener('deviceorientation', (e) => {
let tiltLR = e.gamma; let tiltFB = e.beta; logo.style.transform = `rotate(${tiltLR}deg) rotate3d(1,0,0, ${tiltFB * -1}deg)`; });
None
caniuse.com/#feat=deviceorientation BROWSER support
onde usar?
None
clipboard copy & paste
Possibilita interação com o clipboard do usuário através de operações
de copiar, cortar e colar. clipboard
None
// 1. User interaction is required let button = document.querySelector('button');
button.addEventListener('click', () => { select(); copy(); }); clipboard
// 2. Programmatically select an element function select() { let
input = document.querySelector('input'); input.focus(); input.setSelectionRange(0, input.value.length); } clipboard
// 3. Copy selected element text function copy() { try
{ document.execCommand('copy'); } catch (err) { console.error(err); } } clipboard
document.addEventListener('copy', (e) => { console.log(e.target.value); }); document.addEventListener('cut', (e) => {
console.log(e.target.value); }); document.addEventListener('paste', (e) => { console.log(e.clipboardData.getData('text/plain')); }); clipboard
None
None
caniuse.com/#feat=clipboard BROWSER support
onde usar?
None
None
light ambient
Expõe dados do sensor que capta a intensidade de luz
de um ambiente. ambient light
window.addEventListener('devicelight', (e) => { console.log(`${e.value} lux`); }); ambient light
None
None
let sensor = new AmbientLightSensor(); sensor.start(); sensor.onchange = (e) =>
{ console.log(e.reading.illuminance); }; sensor.stop(); ambient light sensor
BROWSER caniuse.com/#feat=ambient-light support
onde usar?
None
None
STATUS battery
Permite que uma página web acesse informações sobre a bateria
de um dispositivo. battery status
navigator.getBattery().then((battery) => { console.log(`${battery.level * 100}%`); battery.addEventListener('levelchange', () => {
console.log(`${this.level * 100}%`); }); }); battery status
caniuse.com/#feat=battery-status BROWSER support
onde usar?
None
None
web components templates custom elements shadow dom html imports
progressive web apps service workers push notifications offline support app
manifest background sync
WEB assembly
WebAssembly, ou wasm, é um novo formato binário para desenvolvimento
de aplicações de baixo nível. web assembly
under developm ent BROWSER support
None
WEBVR
Uma API experimental que trás o mundo de Realidade Virtual
para web usando Oculus Rift ou Google Cardboard por exemplo. web VR
BROWSER support chromestatus.com/features#webvr
None
gamepad
Permite que páginas web se conectem com controles de video
game via USB. gamepad
window.addEventListener('gamepadconnected', () => { let gp = navigator.getGamepads()[0]; console.log(‘ID:’, gp.id);
console.log(‘Axes:’, gp.axes.length); console.log(‘Buttons:’, gp.buttons.length); }); gamepad
window.addEventListener('gamepadconnected', gameLoop); function gameLoop() { let gp = navigator.getGamepads()[0]; if
(gp.buttons[0].pressed) { console.log('X'); } requestAnimationFrame(gameLoop); } game loop
None
caniuse.com/#feat=gamepad BROWSER support
None
None
2011
2012
2013
2014
None
obrigado @zenorocha muito