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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Zeno Rocha
August 06, 2016
Technology
1k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Web APIs que você (provavelmente) não sabia que existiam
Zeno Rocha
August 06, 2016
More Decks by Zeno Rocha
See All by Zeno Rocha
The Next Generation of Developer-First Products
zenorocha
1
720
7 Habits of Highly Productive Developers
zenorocha
1
450
7 Hábitos de Desenvolvedores Altamente Produtivos
zenorocha
1
580
What's new in the Liferay Community
zenorocha
0
740
Launching Liferay Projects Faster with WeDeploy
zenorocha
1
620
How Liferay fits into the real of latest technologies
zenorocha
0
680
Estoicismo e JavaScript
zenorocha
3
1.2k
Por que ninguém se importa com seu novo projeto open source?
zenorocha
2
1.2k
Como investir em... você!
zenorocha
1
620
Other Decks in Technology
See All in Technology
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
210
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
950
EventBridge Connection
_kensh
5
710
【NRUG vol.18】なぜ多くのオブザーバビリティ導入は失敗するのか
nrug_member
0
120
200個のGitHubリポジトリを横断調査したかった
icck
0
120
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
110
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
630
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
140
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
450
AIっぽい文章を採点して人間らしく直すアプリを作ってみた
yama3133
2
140
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
手塩にかけりゃいいってもんじゃない
ming_ayami
0
550
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
950
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
180
Git: the NoSQL Database
bkeepers
PRO
432
67k
Building the Perfect Custom Keyboard
takai
2
790
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
RailsConf 2023
tenderlove
30
1.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
エンジニアに許された特別な時間の終わり
watany
107
250k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
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