Quelle: Jeshu John
Quelle: XKCD
<!-- Als Web-App ausweisen und Anwendung im Vollbildmodus anzeigen. -->
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- Namen der Anwendung festlegen. -->
<meta name="apple-mobile-web-app-title" content="Meine Anwendung">
<meta name="application-name" content="Meine Anwendung"> <!-- Windows -->
<!-- Icon der Anwendung festlegen. -->
<link rel="apple-touch-icon" href="/img/icon-precomposed.png">
<!-- Startbild der Anwendung festlegen. -->
<link rel="apple-touch-startup-image" href="/img/startup.png">
<meta name="theme-color" content="#BADA55">
<link rel="manifest" href="manifest.json">
{
"name": "Web Application Sample",
"short_name": "MyApp",
"icons": [ ... ],
"start_url": "index.html",
"display": "standalone",
"orientation": "landscape"
}
Quelle: GoogleChrome/samples
<!-- Größe setzen un Zoomen in der Anwendung verhindern. -->
<meta name="viewport" content="width=device-width,
initial-scale=1.0, user-scalable=no">
<!-- Schwarze Statusbar mit weißem Text. -->
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<input type="email">
<input type="tel">
<input type="datetime-local">
<input type="number" pattern="[0-9]*">
<input type="password" pattern="[0-9]*">
...
Quelle: diveintohtml5.info
<div contenteditable>
<ul>
<li>Eins</li>
<li>Zwei</li>
</ul>
</div>
Quelle: creativebloq.com
touchstart |
Ein Finger wird auf ein DOM-Element gelegt. |
touchmove |
Ein Finger wird über ein DOM-Element gezogen. |
touchend |
Ein Finger wird von einem DOM-Element entfernt. |
click
wird um 300ms verzögert, wodurch Anwendung langsam erscheint (weil könnte auch Doppelklick für Zoom werden)<meta name="viewport" content="width=device-width">
touch-action: manipulation;
overflow: auto;
-webkit-overflow-scrolling: touch;
/* disable rubber band effect*/
body { overscroll-behavior: none; }
* { -webkit-tap-highlight-color: rgba(0,0,0,0); }
:active
-State eines Elementsbutton:active { background-color: skyblue; }
// Netzverbindung prüfen
const isOnline = window.navigator.onLine; // true / false
// auf Wechsel reagieren
window.addEventListener('online', ev => alert('😃'));
window.addEventListener('offline', ev => alert('😱'));
<!doctype html>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('service-worker.js');
};
</script>
self.addEventListener('install', event => {
event.waitUntil(
caches.open('sw-cache').then(cache => {
return cache.add('index.html');
})
);
});
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then(response => {
return response || fetch(event.request);
})
);
});
self.addEventListener('push', (event) => {
var title = 'Hallo!.';
var body = 'Hier ist deine Nachricht';
var icon = '/images/icon-192x192.png';
var tag = 'dmeo-tag';
event.waitUntil(
self.registration.showNotification(
title, { body, icon, tag }
)
);
});
Quelle: developer.chrome.com
btn.addEventListener('click', () => {
navigator.share({
title: 'HTW Berlin',
text: 'Hochschule für Technik …',
url: 'https://www.htw-berlin.de',
});
});
Quelle: hospodarets.com
btn.addEventListener('click', () => {
navigator.contacts.select(
['name', 'email', 'tel'],
{ multiple: true }
).then(contacts => {
console.log(contacts)
});
});
Quelle: developer.chrome.com
Battery Status | Akku-Informationen |
Web Notifications | Benachrichtigungen |
Proximity | Nähe des Benutzers zum Gerät |
Vibration | Lässt Gerät vibrieren |
Device Orientation | Ausrichtung des Geräts |
Device Motion | Daten über Bewegungen |
Web Share API | Assets in andere Anwendungen teilen (Tutorial) |