Update index.html

This commit is contained in:
Blackwhitebear8 2025-08-19 13:54:32 +02:00
parent 0f5770eac5
commit 224f969376

View file

@ -3,10 +3,8 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="https://pixelhosting.nl/wp-content/uploads/2022/12/cropped-Pixelhosting-logo-favicon-192x192.png" sizes="192x192" /> <link rel="icon" href="/favicon.png" sizes="192x192" />
<meta name="description" content="IP Weergave Website" /> <meta name="description" content="IP Weergave Website" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://ip.pixelhosting.nl/" /> <link rel="canonical" href="https://ip.pixelhosting.nl/" />
<meta property="og:locale" content="nl_NL" /> <meta property="og:locale" content="nl_NL" />
<meta property="og:site_name" content="IP Weergave" /> <meta property="og:site_name" content="IP Weergave" />
@ -17,57 +15,135 @@
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="IP Weergave" /> <meta name="twitter:title" content="IP Weergave" />
<meta name="twitter:description" content="IP Weergave Website" /> <meta name="twitter:description" content="IP Weergave Website" />
<title>IP Adres Weergave</title> <title>IP Adres Weergave</title>
<style> <style>
body { body {
font-family: 'Arial', sans-serif; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background-color: #f4f4f9; background-color: #F0F8FF;
color: #333; color: #2c3e50;
margin: 0; margin: 0;
padding: 0; padding: 0;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 100vh; min-height: 100vh;
text-align: center; text-align: center;
box-sizing: border-box; position: relative;
overflow: hidden;
} }
.container { .container {
background-color: white; background-color: #ffffff;
padding: 30px; padding: 40px;
border-radius: 8px; border-radius: 12px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
width: 90%; width: 90%;
max-width: 600px; max-width: 600px;
position: relative;
z-index: 10;
} }
h1 { h1 {
font-size: 2.2em; font-size: 2.5em;
color: #5e5e5e; color: #34495e;
margin-bottom: 20px; margin-bottom: 25px;
} }
.result { .data-group {
font-size: 1.3em; background-color: #f8f9fa;
margin-top: 20px; padding: 20px;
border-radius: 8px;
margin-top: 25px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
text-align: left;
}
.data-title {
font-size: 1.5em;
color: #34495e;
margin-bottom: 15px;
text-align: center;
}
.data-item {
font-size: 1.1em;
color: #555; color: #555;
background-color: #e6e6e6;
padding: 15px;
border-radius: 6px;
font-weight: bold; font-weight: bold;
word-wrap: break-word; display: flex;
white-space: normal; justify-content: space-between;
align-items: center;
margin-bottom: 10px;
flex-wrap: wrap;
} }
.loading { .data-label {
color: #888; display: flex;
align-items: center;
}
.data-value {
font-weight: normal;
font-style: italic; font-style: italic;
} }
@media (max-width: 600px) { .data-icon {
h1 { font-size: 1.2em;
font-size: 1.8em; margin-right: 8px;
color: #07AAF9;
} }
.result { .copy-button {
font-size: 1.1em; background-color: #07AAF9;
padding: 10px; color: white;
border: none;
padding: 12px;
border-radius: 5px;
cursor: pointer;
font-size: 1em;
transition: background-color 0.3s ease;
width: 100%;
margin-top: 15px;
}
.copy-button:hover {
background-color: #0588c8;
}
.loading {
color: #7f8c8d;
font-style: italic;
}
.copy-success-message {
position: fixed;
top: -60px;
left: 50%;
transform: translateX(-50%);
background-color: #28a745;
color: white;
padding: 15px 25px;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
font-size: 1em;
font-weight: bold;
z-index: 1000;
transition: top 0.5s ease-in-out;
}
.copy-success-message.show {
top: 20px;
}
@media (max-width: 600px) {
.container {
padding: 20px;
}
h1 {
font-size: 2em;
}
.data-group {
padding: 15px;
text-align: center;
}
.data-item {
display: block;
}
.data-label,
.data-value {
text-align: center;
width: 100%;
white-space: normal;
box-sizing: border-box;
display: block;
}
.data-label {
margin-bottom: 5px;
} }
} }
</style> </style>
@ -76,132 +152,116 @@
<div class="container"> <div class="container">
<h1>Jouw Publieke IP Adressen</h1> <h1>Jouw Publieke IP Adressen</h1>
<div class="result" id="ipOutput6">
<span class="loading">Je IPv6-adres wordt opgehaald...</span> <div class="data-group">
<h2 class="data-title">Jouw IPv6-gegevens</h2>
<div class="data-item">
<span class="data-label"><span class="data-icon">🌐</span>Jouw IPv6-adres:</span>
<span class="data-value loading" id="ipOutput6-text">Wordt opgehaald...</span>
</div> </div>
<div class="result" id="ipOutput6ms"> <div class="data-item">
<span class="loading">Je IPv6 latency wordt opgehaald...</span> <span class="data-label"><span class="data-icon"></span>Jouw IPv6-latency:</span>
<span class="data-value loading" id="latencyOutput6-text">Wordt opgehaald...</span>
</div> </div>
<div class="result" id="ipOutput4"> <button class="copy-button" id="copyBtn6" style="display: none;">Kopieer IP</button>
<span class="loading">Je IPv4-adres wordt opgehaald...</span>
</div> </div>
<div class="result" id="ipOutput4ms">
<span class="loading">Je IPv4 latency wordt opgehaald...</span> <div class="data-group">
<h2 class="data-title">Jouw IPv4-gegevens</h2>
<div class="data-item">
<span class="data-label"><span class="data-icon">🌐</span>Jouw IPv4-adres:</span>
<span class="data-value loading" id="ipOutput4-text">Wordt opgehaald...</span>
</div>
<div class="data-item">
<span class="data-label"><span class="data-icon"></span>Jouw IPv4-latency:</span>
<span class="data-value loading" id="latencyOutput4-text">Wordt opgehaald...</span>
</div>
<button class="copy-button" id="copyBtn4" style="display: none;">Kopieer IP</button>
</div> </div>
</div> </div>
<div id="copy-success-message" class="copy-success-message"></div>
<script> <script>
// Functie om de latency v4 op te halen en weer te geven let ipv4_address = null;
async function fetch4MS() { let ipv6_address = null;
const ipOutput4 = document.getElementById('ipOutput4ms');
ipOutput4.innerHTML = '<span class="loading">Je IPv4 latency wordt opgehaald...</span>'; async function fetchIPAndLatency(version) {
const ipTextElement = document.getElementById(`ipOutput${version}-text`);
const latencyTextElement = document.getElementById(`latencyOutput${version}-text`);
const copyBtn = document.getElementById(`copyBtn${version}`);
const ipUrl = `https://ip-v${version}.pixelhosting.nl/ip-api.php`;
const latencyUrl = `https://ip-v${version}.pixelhosting.nl/latency-api.php`;
try { try {
const response = await fetch('https://ip-v4.pixelhosting.nl/latency.php'); const ipResponse = await fetch(ipUrl);
const ipData = await ipResponse.json();
if (!response.ok) { if (ipData.ip) {
throw new Error(`HTTP-fout! status: ${response.status}`); const ipAddress = ipData.ip;
} ipTextElement.textContent = ipAddress;
copyBtn.style.display = 'block';
const data = await response.json(); if (version === 4) {
ipv4_address = ipAddress;
if (data.latency_ms) { copyBtn.onclick = () => copyToClipboard(ipv4_address);
ipOutput4ms.textContent = `Jouw Ipv4 latency is: ${data.latency_ms} MS`;
console.log(`Jouw Ipv4 latency is: ${data.latency_ms} MS`)
} else { } else {
ipOutput4ms.textContent = 'No IPv4 latency found.'; ipv6_address = ipAddress;
copyBtn.onclick = () => copyToClipboard(ipv6_address);
}
} else {
ipTextElement.textContent = `Geen IPv${version}-adres gevonden.`;
} }
} catch (error) { } catch (error) {
ipOutput4ms.textContent = 'No IPv4 latency found.'; ipTextElement.textContent = `Fout bij ophalen van IPv${version}-adres.`;
console.error('Foutdetails (IPv4ms):', error);
} }
}
// Functie om de latency v6 op te halen en weer te geven
async function fetch6MS() {
const ipOutput6 = document.getElementById('ipOutput6ms');
ipOutput6.innerHTML = '<span class="loading">Je IPv6 latency wordt opgehaald...</span>';
try { try {
const response = await fetch('https://ip-v6.pixelhosting.nl/latency.php'); let totalLatency = 0;
const numTests = 5;
if (!response.ok) { for (let i = 0; i < numTests; i++) {
throw new Error(`HTTP-fout! status: ${response.status}`); const startTime = performance.now();
} await fetch(latencyUrl, { cache: 'no-store' });
const endTime = performance.now();
const data = await response.json(); totalLatency += (endTime - startTime);
if (data.latency_ms) {
ipOutput6ms.textContent = `Jouw Ipv6 latency is: ${data.latency_ms} MS`;
console.log(`Jouw Ipv6 latency is: ${data.latency_ms} MS`)
} else {
ipOutput6ms.textContent = 'No IPv6 latency found.';
} }
const averageLatency = Math.round(totalLatency / numTests);
latencyTextElement.textContent = `${averageLatency} MS`;
} catch (error) { } catch (error) {
ipOutput6ms.textContent = 'No IPv6 latency found.'; latencyTextElement.textContent = `Fout.`;
console.error('Foutdetails (IPv6ms):', error); console.error(`Foutdetails (IPv${version}-latency):`, error);
} }
}
// Functie om het IPv4-adres op te halen en weer te geven
async function fetchIP4Address() {
const ipOutput4 = document.getElementById('ipOutput4');
ipOutput4.innerHTML = '<span class="loading">Bezig met ophalen van IPv4...</span>';
try {
const response = await fetch('https://ip-v4.pixelhosting.nl/ip-api.php');
if (!response.ok) {
throw new Error(`HTTP-fout! status: ${response.status}`);
} }
const data = await response.json(); function showCopyMessage(text) {
const messageBox = document.getElementById('copy-success-message');
if (data.ip) { messageBox.style.display = 'block';
ipOutput4.textContent = `Jouw IPv4-adres is: ${data.ip}`; messageBox.textContent = `Gekopieerd: ${text}`;
console.log(`${data.ip}`) messageBox.classList.add('show');
} else {
ipOutput4.textContent = 'Geen IPv4-adres gevonden.';
}
} catch (error) {
ipOutput4.textContent = 'Er lijkt geen IPv4-adres gevonden te zijn.';
console.error('Foutdetails (IPv4):', error);
}
}
// Functie om het IPv6-adres op te halen en weer te geven setTimeout(() => {
async function fetchIP6Address() { messageBox.classList.remove('show');
const ipOutput6 = document.getElementById('ipOutput6'); }, 3000);
ipOutput6.innerHTML = '<span class="loading">Bezig met ophalen van IPv6...</span>';
try { setTimeout(() => {
const response = await fetch('https://ip-v6.pixelhosting.nl/ip-api.php'); messageBox.style.display = 'none';
}, 3500);
if (!response.ok) {
throw new Error(`HTTP-fout! status: ${response.status}`);
} }
const data = await response.json(); function copyToClipboard(text) {
navigator.clipboard.writeText(text).then(() => {
if (data.ip) { showCopyMessage(text);
ipOutput6.textContent = `Jouw IPv6-adres is: ${data.ip}`; }).catch(err => {
console.log(`${data.ip}`) console.error('Kopiëren mislukt: ', err);
} else { alert("Kopiëren mislukt. Probeer handmatig.");
ipOutput6.textContent = 'Geen IPv6-adres gevonden.'; });
} }
} catch (error) {
ipOutput6.textContent = 'Er lijkt geen IPv6-adres gevonden te zijn.';
console.error('Foutdetails (IPv6):', error);
}
}
// Roep beide functies aan bij het laden van de pagina window.onload = () => {
window.onload = () => { document.getElementById('copy-success-message').style.display = 'none';
fetch4MS(); fetchIPAndLatency(4);
fetch6MS(); fetchIPAndLatency(6);
fetchIP4Address(); };
fetchIP6Address();
};
</script> </script>
</body> </body>