The Web Storage API allows storing key-value pairs in the browser.
Data stored using localStorage persists even after the browser is closed.
localStorage.setItem("username", "Alice");
let user = localStorage.getItem("username");
console.log(user);
localStorage.setItem("username", "Alice");
let user = localStorage.getItem("username");
console.log(user);
localStorage.setItem("username", "Alice");
let user = localStorage.getItem("username");
console.log(user); localStorage.removeItem("username");
localStorage.clear(); localStorage.removeItem("username");
localStorage.clear(); localStorage.removeItem("username");
localStorage.clear(); Session storage works like local storage but clears data when the session (tab) is closed.
sessionStorage.setItem("sessionUser", "Bob");
console.log(sessionStorage.getItem("sessionUser"));
sessionStorage.removeItem("sessionUser");sessionStorage.setItem("sessionUser", "Bob");
console.log(sessionStorage.getItem("sessionUser"));
sessionStorage.removeItem("sessionUser");sessionStorage.setItem("sessionUser", "Bob");
console.log(sessionStorage.getItem("sessionUser"));
sessionStorage.removeItem("sessionUser");The Fetch API allows JavaScript to make network requests asynchronously, commonly used for retrieving data from APIs.
fetch("https://jsonplaceholder.typicode.com/users/1")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error)); fetch("https://jsonplaceholder.typicode.com/users/1")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error)); fetch("https://jsonplaceholder.typicode.com/users/1")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error)); async function getUserData() {
try {
let response = await fetch("https://jsonplaceholder.typicode.com/users/1");
let data = await response.json();
console.log(data);
} catch (error) {
console.log("Error fetching data:", error);
}
}
getUserData();async function getUserData() {
try {
let response = await fetch("https://jsonplaceholder.typicode.com/users/1");
let data = await response.json();
console.log(data);
} catch (error) {
console.log("Error fetching data:", error);
}
}
getUserData();async function getUserData() {
try {
let response = await fetch("https://jsonplaceholder.typicode.com/users/1");
let data = await response.json();
console.log(data);
} catch (error) {
console.log("Error fetching data:", error);
}
}
getUserData();fetch("https://jsonplaceholder.typicode.com/posts", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ title: "New Post", body: "Post content", userId: 1 })
})
.then(response => response.json())
.then(data => console.log("Post created:", data))
.catch(error => console.log("Error:", error));fetch("https://jsonplaceholder.typicode.com/posts", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ title: "New Post", body: "Post content", userId: 1 })
})
.then(response => response.json())
.then(data => console.log("Post created:", data))
.catch(error => console.log("Error:", error));fetch("https://jsonplaceholder.typicode.com/posts", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ title: "New Post", body: "Post content", userId: 1 })
})
.then(response => response.json())
.then(data => console.log("Post created:", data))
.catch(error => console.log("Error:", error));The Geolocation API retrieves the user's current location.
if ("geolocation" in navigator) {
console.log("Geolocation is supported!");
} else {
console.log("Geolocation is not supported.");
}if ("geolocation" in navigator) {
console.log("Geolocation is supported!");
} else {
console.log("Geolocation is not supported.");
}if ("geolocation" in navigator) {
console.log("Geolocation is supported!");
} else {
console.log("Geolocation is not supported.");
}navigator.geolocation.getCurrentPosition(
position => {
console.log("Latitude:", position.coords.latitude);
console.log("Longitude:", position.coords.longitude);
},
error => console.log("Error getting location:", error.message)
);navigator.geolocation.getCurrentPosition(
position => {
console.log("Latitude:", position.coords.latitude);
console.log("Longitude:", position.coords.longitude);
},
error => console.log("Error getting location:", error.message)
);navigator.geolocation.getCurrentPosition(
position => {
console.log("Latitude:", position.coords.latitude);
console.log("Longitude:", position.coords.longitude);
},
error => console.log("Error getting location:", error.message)
);navigator.geolocation.watchPosition(
position => {
console.log("Updated Location:", position.coords.latitude, position.coords.longitude);
}
);navigator.geolocation.watchPosition(
position => {
console.log("Updated Location:", position.coords.latitude, position.coords.longitude);
}
);navigator.geolocation.watchPosition(
position => {
console.log("Updated Location:", position.coords.latitude, position.coords.longitude);
}
);The Clipboard API allows copying and pasting text programmatically.
navigator.clipboard.writeText("Copied text!").then(() => {
console.log("Text copied to clipboard!");
});navigator.clipboard.writeText("Copied text!").then(() => {
console.log("Text copied to clipboard!");
});navigator.clipboard.writeText("Copied text!").then(() => {
console.log("Text copied to clipboard!");
});navigator.clipboard.readText().then(text => {
console.log("Clipboard content:", text);
});navigator.clipboard.readText().then(text => {
console.log("Clipboard content:", text);
});navigator.clipboard.readText().then(text => {
console.log("Clipboard content:", text);
});The Notification API allows web applications to send notifications to users.
if (Notification.permission !== "granted") {
Notification.requestPermission().then(permission => {
console.log("Notification permission:", permission);
});
}if (Notification.permission !== "granted") {
Notification.requestPermission().then(permission => {
console.log("Notification permission:", permission);
});
}if (Notification.permission !== "granted") {
Notification.requestPermission().then(permission => {
console.log("Notification permission:", permission);
});
}new Notification("Hello!", {
body: "This is a notification from JavaScript.",
icon: "icon.png"
});new Notification("Hello!", {
body: "This is a notification from JavaScript.",
icon: "icon.png"
});new Notification("Hello!", {
body: "This is a notification from JavaScript.",
icon: "icon.png"
});The Intersection Observer API detects when an element enters or leaves the viewport, useful for lazy loading images or triggering animations.
let observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log("Element is in view:", entry.target);
}
});
});
let targetElement = document.getElementById("observe-me");
observer.observe(targetElement);let observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log("Element is in view:", entry.target);
}
});
});
let targetElement = document.getElementById("observe-me");
observer.observe(targetElement);let observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log("Element is in view:", entry.target);
}
});
});
let targetElement = document.getElementById("observe-me");
observer.observe(targetElement);Web APIs extend JavaScript's capabilities by enabling data storage, making HTTP requests, accessing user location, handling clipboard interactions, and displaying notifications. The next section will explore browser compatibility and performance optimization techniques to ensure smooth execution across different devices and environments.