- ID de l'analyse :
- 3ed0cac9-6089-4b14-935d-38ed81a5ff7cTerminée
- URL soumise :
- https://mcpsmd.app/Redirigé
- Fin du rapport :
Liens : 0 trouvé(s)
Liens sortants identifiés à partir de la page
Variables JavaScript : 12 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
0 | object |
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
__cfQR | object |
requestNotificationPermission | function |
subscribeUserToPushNotifications | function |
sendSubscriptionToServer | function |
urlBase64ToUint8Array | function |
tailwind | object |
Messages de journal de console : 3 trouvé(s)
Messages consignés dans la console web
Type | Catégorie | Enregistrement |
---|---|---|
warning | other |
|
log | javascript |
|
error | other |
|
HTML
Le corps HTML de la page en données brutes
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MCPS Status Page - Code Green</title>
<link rel="apple-touch-icon" href="/static/img/green/apple-touch-icon-180x180.png">
<link rel="shortcut icon" href="/static/img/green/apple-touch-icon-180x180.png">
<meta property="og:url" content="https://mcpsmd.app/status">
<meta property="title" content="There is currently a Code Green for Montgomery County Public Schools (MCPS).">
<meta property="og:title" content="There is currently a Code Green for Montgomery County Public Schools (MCPS).">
<meta property="og:image" content="/static/img/green.png">
<meta property="image" content="/static/img/green.png">
<meta property="og:description" content="All schools and offices are open on time. Before and After school childcare programs and Community Use occur as scheduled">
<meta property="description" content="All schools and offices are open on time. Before and After school childcare programs and Community Use occur as scheduled">
<script type="text/javascript">
// Check if service workers are supported
if ('serviceWorker' in navigator) {
// Register the service worker
navigator.serviceWorker.register('/service-worker.js')
.then(function (registration) {
console.log('Service Worker registered:', registration);
// Request permission for notifications
requestNotificationPermission(registration);
})
.catch(function (error) {
console.error('Service Worker registration failed:', error);
});
} else {
console.error('Service Workers are not supported in this browser.');
}
// Function to request notification permission from the user
function requestNotificationPermission(registration) {
Notification.requestPermission()
.then(function (permission) {
if (permission === 'granted') {
console.log('Notification permission granted.');
// Subscribe the user to push notifications
subscribeUserToPushNotifications(registration);
} else {
console.error('Notification permission not granted.');
}
})
.catch(function (error) {
console.error('Error requesting notification permission:', error);
});
}
// Function to subscribe the user to push notifications
function subscribeUserToPushNotifications(registration) {
const applicationServerKey = urlBase64ToUint8Array('BGszmYGoUpftvo6gSyusAN22t0PfZMjkocRZx6Mj10-4J7raU-K-pMW0woRbG_3JyzyNjD6nODGcDHvEKsOE5pE');
registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: applicationServerKey
})
.then(function (subscription) {
console.log('User is subscribed:', subscription);
// Send the subscription to the server
sendSubscriptionToServer(subscription);
})
.catch(function (error) {
console.error('Failed to subscribe the user:', error);
});
}
// Function to send the subscription object to the server
function sendSubscriptionToServer(subscription) {
fetch('/subscribe-notification', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(subscription)
})
.then(function (response) {
if (!response.ok) {
throw new Error('Bad status code from server.');
}
return response.json();
})
.then(function (data) {
console.log('Server response:', data);
})
.catch(function (error) {
console.error('Error sending subscription to server:', error);
});
}
// Utility function to convert a base64url string to a Uint8Array
function urlBase64ToUint8Array(base64String) {
// Pad the base64 string if necessary
const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
// Replace URL-safe characters with base64 characters
const base64 = (base64String + padding)
.replace(/\-/g, '+')
.replace(/_/g, '/');
// Decode the base64 string
const rawData = atob(base64);
// Create a Uint8Array of the appropriate length
const outputArray = new Uint8Array(rawData.length);
// Convert each character to its UTF-8 representation
for (let i = 0; i < rawData.length; ++i) {
outputArray[i] = rawData.charCodeAt(i);
}
return outputArray;
}
</script>
<script src="https://cdn.tailwindcss.com" type="text/javascript"></script>
<style>
@font-face {
font-family: 's';
src: url(/static/fonts/font.woff2) format('woff2');
}
.custom-icon {
font-family: 's';
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
</style>
<style>/* ! tailwindcss v3.4.5 | MIT License | https://tailwindcss.com */*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{--tw-content:''}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*, ::before, ::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.fixed{position:fixed}.inset-x-0{left:0px;right:0px}.bottom-0{bottom:0px}.mx-auto{margin-left:auto;margin-right:auto}.mb-4{margin-bottom:1rem}.mr-2{margin-right:0.5rem}.mt-2{margin-top:0.5rem}.mt-4{margin-top:1rem}.flex{display:flex}.h-3{height:0.75rem}.h-screen{height:100vh}.w-3{width:0.75rem}.w-full{width:100%}.max-w-xs{max-width:20rem}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.p-4{padding:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.text-center{text-align:center}.font-sans{font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-xs{font-size:0.75rem;line-height:1rem}.font-bold{font-weight:700}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94 / var(--tw-text-opacity))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}@media (min-width: 640px){.sm\:max-w-sm{max-width:24rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-sm{font-size:0.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:0.75rem;line-height:1rem}}@media (min-width: 768px){.md\:max-w-md{max-width:28rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}}@media (min-width: 1024px){.lg\:max-w-lg{max-width:32rem}}@media (prefers-color-scheme: dark){.dark\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.dark\:font-bold{font-weight:700}.dark\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219 / var(--tw-text-opacity))}.dark\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-green-500{--tw-text-opacity:1;color:rgb(34 197 94 / var(--tw-text-opacity))}}</style></head>
<body class="bg-gray-100 dark:bg-gray-800 font-sans">
<!--<div id="banner" class="sticky top-0 z-50 bg-yellow-400 dark:bg-yellow-600 text-black text-center p-2 rounded-b-lg">
<p>(10/14) Walt Whitman High is experiencing ongoing plumbing issues. School is cancelled after 11:15.</p>
</div>-->
<div class="flex items-center justify-center h-screen">
<div class="w-full max-w-xs sm:max-w-sm md:max-w-md lg:max-w-lg px-4 py-6 mx-auto bg-white dark:bg-gray-700 rounded-lg shadow-md">
<div class="text-center">
<div class="flex flex-col items-center justify-center mb-4">
<div class="flex items-center">
<span class="h-3 w-3 rounded-full mr-2 bg-green-500 dark:bg-green-500"></span>
<span class="text-lg sm:text-xl md:text-2xl font-bold text-green-500 dark:text-green-500">Code Green</span>
</div>
<p class="text-xs sm:text-xs text-gray-500 dark:text-gray-400 mt-2">as of <span id="epoch">just now</span></p>
</div>
<p class="text-sm sm:text-base text-gray-600 dark:text-gray-300">All schools and offices are open on time. Before and After school childcare programs and Community Use occur as scheduled</p>
</div>
<div class="text-center mt-4">
<p class="text-xs text-gray-500 dark:text-gray-300 dark:font-bold">School is operating normally</p>
</div>
</div>
</div>
<footer id="canvas" class="fixed inset-x-0 bottom-0 bg-white dark:bg-gray-700">
<div class="p-4 text-center text-gray-600 dark:text-gray-300">
<p class="text-xs sm:text-sm" style="margin-bottom:1.5vh;">© 2024 MCPSMD.app. All Rights Reserved.</p>
<!--<i class="custom-icon text-green-700 dark:text-green-300"></i>
<span class="ml-2 text-green-700 dark:text-green-300"><span>Net-zero carbon</span></span> | -->Made with pride in the USA— keeping America great
<br>
<p class="text-xs sm:text-sm" style="margin-top:1.5vh;">
<a href="/terms" class="underline">Terms of Service</a> |
<a href="/privacy" class="underline">Privacy Policy</a>
</p>
</div>
</footer>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8d7154ac8b952fa1',t:'MTcyOTY4MjM1Mi4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script><iframe height="1" width="1" style="position: absolute; top: 0px; left: 0px; border: none; visibility: hidden;"></iframe>
<script type="text/javascript">
const time = document.getElementById('epoch').textContent;
function epochToText(epoch) {
const epochNow = new Date().getTime() / 1000;
if (Number.isInteger(epochNow) && Number.isInteger(epoch) && epoch < epochNow && epoch > 0 && ) {
const diff = epochNow - epoch;
if (diff < 60) {
return 'just now';
} else if (diff < 3600) {
return `${Math.floor(diff / 60)} minutes ago`;
} else if (diff < 86400) {
return `${Math.floor(diff / 3600)} hours ago`;
} else {
return `${Math.floor(diff / 86400)} days ago`;
}
} else {
return 'unknown';
}
}
</script>
</body></html>