【发布时间】:2011-06-14 04:49:21
【问题描述】:
我有一个页面,其中包含网络状态的事件侦听器。当网络“离线”时,我想禁用任何跨域链接以进入离线模式。我尝试使用.preventDefault(),但是当应用重新上线时,我需要重新启用链接。
事件监听器
//check network status
if(!navigator.onLine) {
offlineLinks(); //Offline mode function
}
//add event listeners for network status
window.addEventListener('offline', function(e) {
offlineLinks(); //Offline mode function
}, false);
window.addEventListener('online', function(e) {
//need to re-enable links/Online mode
}, false);
window.addEventListener('error', function(e) {
alert('Error fetching manifest: there is a good chance we are offline.');
offlineLinks(); //Offline mode function
});
“解除链接”功能
function offlineLinks() {
$('a[href^="http"]').click(function(e) {
e.preventDefault();
$('#offline-dialog').dialog({
modal: true,
buttons: {
Ok: function() {
$(this).dialog('close');
}
}
});
});
}
我正在寻找一种可扩展的解决方案,该解决方案在页面上有大量链接时不会造成延迟。是否有一个简单的解决方案来逆转.preventDefault() 调用或完成此任务的更好方法?
可能的解决方案
我最初的想法是存储一组 href 值,然后删除/添加。我一直在使用webdb 使用 HTML5 存储,我可以为它创建一个数据库并动态拉取 hrefs onclick...但是我不确定这是否是最好的解决方案。
【问题讨论】:
标签: javascript jquery html preventdefault offlineapps