要在Internet可用时导入JavaScript文件,可以使用以下几种方法:
<script>
标签将外部JavaScript文件引入到HTML文档中。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dynamic Script Loading</title>
</head>
<body>
<h1>Check Internet and Load Script</h1>
<script>
function loadScript(url) {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = url;
script.onload = resolve;
script.onerror = reject;
document.head.appendChild(script);
});
}
function checkInternetAndLoadScript() {
if (navigator.onLine) {
loadScript('https://example.com/script.js')
.then(() => console.log('Script loaded successfully'))
.catch(err => console.error('Failed to load script', err));
} else {
console.log('No internet connection, script not loaded.');
}
}
window.addEventListener('load', checkInternetAndLoadScript);
</script>
</body>
</html>
// service-worker.js
self.addEventListener('install', event => {
event.waitUntil(
caches.open('v1').then(cache => {
return cache.addAll([
'/',
'/index.html',
'/styles.css'
]);
})
);
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response || fetch(event.request);
})
);
});
在主页面注册Service Worker:
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/service-worker.js')
.then(registration => {
console.log('Service Worker registered with scope:', registration.scope);
})
.catch(error => {
console.error('Service Worker registration failed:', error);
});
});
}
</script>
navigator.onLine
可能不够精确,可以考虑结合更复杂的网络检测逻辑。try-catch
或Promise的错误处理机制。通过上述方法,可以在Internet可用时有效地导入JavaScript文件,提升应用的性能和用户体验。
领取专属 10元无门槛券
手把手带您无忧上云