撤消preventDefault()或以更好的方式以编程方式禁用链接集合
||
我有一个页面,其中包含网络状态的事件侦听器。当网络为“离线”时,我想禁用任何跨域链接以进入离线模式。我试图使用“ 0”,但是当应用重新上线时,我需要重新启用链接。
事件监听器
//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\');
}
}
});
});
}
我正在寻找一个可伸缩的解决方案,如果页面上有大量链接,则不会造成延迟。是否有一个简单的解决方案可以撤消ѭ0调用或完成此任务的更好方法?
可能的解决方案
我最初的想法是先存储一个href值数组,然后再删除/添加。我一直在使用webdb
来处理HTML5存储,我可以为其创建数据库并动态提取hrefs onclick ...但是我不确定这是否是最佳解决方案。
没有找到相关结果
已邀请:
1 个回复
为陡土
顺便说一句,如果只希望外部链接发生这种情况,href ^ = \“ http \”就会有些脆弱。内部链接可能以\“ http \”开头,而某些外部链接可能以\“ ftp \”等其他协议开头。最好为此类链接提供自己的类,例如Wikipedia对\'external \'进行处理。