Table of contents
  1. Speech
  2. Storage
    1. localStorage
    2. sessionStorage
  3. Fetch
  4. Geolocation
  5. Canvas
  6. Audio
  7. Sockets
  8. IndexedDB
  9. File
  10. Notification
  11. Workers
  12. Intersection Observer
  13. Mutation Observer
  14. Pointer Lock
  15. Battery Status
  16. Gamepad
  17. DeviceOrientation
  18. Push
  19. Payment Request




Speech

const textToSpeak = "Hello There";
const utterance = new SpeechSynthesisUtterance(textToSpeak);
window.speechSynthesis.speak(utterance);

Storage

localStorage

// Store data
localStorage.setItem('key', 'value');
// Retrieve data
const storedValue = localStorage.getItem('key');
// Remove data
localStorage.removeItem('key');

sessionStorage

// Store data
sessionStorage.setItem('key', 'value');
// Retrieve data
const storedValue = sessionStorage.getItem('key');
// Remove data
sessionStorage.removeItem('key');

Fetch

fetch('http://example.com/movies.json')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('error:', error));

Geolocation

Using Navigator

navigator.geolocation.getCurrentPosition(position => {
    console.log(`Latitude: ${position.coords.latitude}, Longitude: ${position.coords.longitude}`);
}, error => {
    console.error("Error getting location:", error - message);
})

Canvas

const canvas = document.createElement('canvas');
canvas.width = 200;
canvas.height = 100;
document.body.appendChild(canvas);
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'blue';
ctx.fillRect(10, 10, 180, 80);

Audio

const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const oscillator = audioContext.create0scillator();
oscillator.frequency.setValueAtTime(440, audioContext.currentTime);
oscillator.connect(audioContext.destination);
oscillator.start();
oscillator.stop(audioContext.currentTime + 1);

Sockets

const socket = new WebSocket('wss://example.com/socket');
socket.addEventListener('open', () => socket.send('Hello, server!'));
socket.addEventListener('message', event => console.log('Received: ', event.data));
socket.addEventListener('close', () => console.log('Connection closed. '));

IndexedDB

Structured client side data storage

// Open (or create) the database
const dbName = "InstagramPostsDB";
const dbVersion = 1;
const request = indexedDB.open(dbName, dbVersion);
//handles errors that may occur during the database opening process.
request.onerror(() => 1);
//specifies the actions to be taken when the database structure is being upgraded.
request.onupgradeneeded(() = {});
//defines the actions to be taken upon successful opening of the database.
request.onsuccess(() = {});

File

Manipulate files, access metadata.

<input type="file" id="imageInput" accept="image/*">
<button onclick="uploadPost ()">Upload Post</button>
<script>
    function uploadPost() {
        const file = document.getElementById('imageInput').files[0];
        console.log('Selected file:', file);
    }
</script>

Notification

Display system notifications.

Notification.requestPermission()
            .then(permission => {
                new Notification('Hello, World!');
            });

Workers

const worker = new Worker('worker.js');
worker = postMessage('Hello from main script!');

Intersection Observer

Efficiently observes element visibility
changes

const observer = new IntersectionObserver(entries => entries.forEach(entry => entry.isIntersecting && console.log('Element is in the viewport!'));

observer.observe(document.getElementById('yourElementId'));

Mutation Observer

Observe DOM changes
asynchronously.

const observer = new MutationObserver
mutations => mutations.forEach(mutation => console.log('DOM change detected:', mutation)
const targetNode = document.getElementById('yourElementId');
const config = {attributes: true, childList: true, subtree: true};
observer.observe(targetNode, config); // Start observing DOM changes.

Pointer Lock

Captures mouse movements precisely
in-browser.

const element = document.getElementById('yourElementId');
element.requestPointerLock();

Battery Status

Monitors device battery information
asynchronously.

navigator.getBattery().then(battery => {
    console.log('Battery Level:', battery.level * 100 + '%');
    console.log('Charging:', battery, charging
                                      ? 'Yes'
                                      : 'No');
});

Gamepad

Interacts with game controller devices.

window.addEventListener("gamepadconnected", (event) => console.log("'Gamepad connected:", event.gamepad.id));
window.addEventListener("gamepaddisconnected", (event) => console.log("'Gamepad disconnected:", event.gamepad.id)

DeviceOrientation

window.addEventListener("deviceorientation", (event) => {
    console.log("Device Orientation:", event.alpha, event.beta, event.gamma);
});
window.addEventListener("devicemotion", (event) => {
    console.log("Device Motion:", event.acceleration., event.acceleration.y, event.acceleration.z);
});

Push

enables push notifications in browsers

// Check for Push API support
if ('PushManager' in window) {
// Request notification permission
    Notification.requestPermission()
                .then(permission => {
                    if (permission === 'granted') {
// Subscription logic goes here
                    }
                });
}

Payment Request

Facilitates streamlined online payment
processing in browsers.

const supportedInstruments = [{supportedMethods: 'basic-card'}];
const paymentDetails = {
    total: {label: 'Total', amount: {currency: 'USD', value: '10.00'}}
};
const paymentPromise = new PaymentRequest(supportedInstruments, paymentDetails);

paymentPromise
    .show()
    .then(paymentResponse => paymentResponse.complete('success')