отменить preventDefault () или лучший способ программного отключения коллекций ссылок

У меня есть страница, на которой есть прослушиватели событий для статуса сети. Когда сеть находится в автономном режиме, я хочу отключить любые междоменные ссылки, чтобы перейти в автономный режим. Я пытался использовать .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 и затем удали / добавь. Я поигрался с хранилищем HTML5, используя webdb . Я мог бы создать базу данных и динамически извлекать hrefs onclick ... однако я не уверен, что это лучшее решение для этого.

5
задан jon3laze 14 June 2011 в 04:59
поделиться