annuler preventDefault() ou le meilleur moyen de faire le désactiver les collections de liens

J'ai une page qui a des écouteurs d'événement pour l'état du réseau. Lorsque le réseau est "hors ligne" je veux désactiver toutes les croix domaine des liens pour aller en mode hors ligne. J'ai essayé d'utiliser .preventDefault(), cependant lorsque l'application est de nouveau en ligne j'ai besoin de ré-activer les liens.

Des Écouteurs D'Événement

//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
});

Fonction à la "dé-liaison"

function offlineLinks() {
    $('a[href^="http"]').click(function(e) {
        e.preventDefault();
        $('#offline-dialog').dialog({
            modal: true,
            buttons: {
                Ok: function() {
                    $(this).dialog('close');
                }
            }
        });
    });
}

Je suis à la recherche d'une solution évolutive qui ne cause pas de lag si il y a un nombre important de liens sur la page. Est-il une solution simple pour inverser la .preventDefault() appel ou une meilleure façon d'accomplir cette tâche?

Solutions Possibles


Mes premières pensées ont été soit stocker un tableau de la href valeurs et ensuite de supprimer/ajouter. J'ai été jouer avec le HTML5 stockage à l'aide de webdb's j'ai pu créer une base de données pour dynamiquement et tirez le hrefs onclick...cependant, je ne suis pas sûr si c'est la meilleure solution pour cela.

OriginalL'auteur jon3laze | 2011-06-14