Препятствуйте тому, чтобы веб-страница переместилась по далеко использованию JavaScript

Вместо использования strcpy, почему бы просто не переместить указатели узла? Если это односвязный список, вам понадобится узел before, предшествующий узлу temp, поэтому, когда вы делаете temp = temp->next, вы сначала делаете before = temp. Вот как вы бы поступили с двусвязным узлом:

if (strcmp(/*...*/) > 0) {
    ReviewNode *swap = temp->next;
    temp->next = swap->next;
    swap->prev = temp->prev;
    swap->next = temp;
    temp->prev = swap;
}

Таким образом, вам не нужно копировать строки, которые могут занимать гораздо больше времени, чем простое перемещение узлов. Хороший способ узнать, как перемещать эти ссылки, - это взять карандаш и лист бумаги и смоделировать отсортированный список. Это требует времени, но в конечном итоге вы многому у него учитесь!

Без гораздо большей информации трудно понять, с какими проблемами вы сталкиваетесь. Удачи!

117
задан Danny Fardy Jhonston Bermúdez 3 November 2017 в 18:25
поделиться

3 ответа

Использование onunload позволяет отображать только сообщения, но не прерывает навигацию (потому что слишком поздно). Тем не менее, вы можете использовать onbeforeunload , и это прервет навигацию:

window.onbeforeunload = function() {
  return "Are you sure you want to navigate away?";
}

Редактировать : Удалено Подтверждение () в операторе возврата, так как это вызвало окно подтверждения, как и ожидалось, но также показал второе подтверждение с результатом первого подтверждения.

143
ответ дан 24 November 2019 в 02:07
поделиться

Используйте при выгрузке .

Для jQuery, я думаю, это работает так:

$(window).unload(function() { 
  alert("Unloading"); 
  return falseIfYouWantToButBeCareful();
});
3
ответ дан 24 November 2019 в 02:07
поделиться

В примере Аймана, возвращая false, вы предотвращаете закрытие окна / вкладки браузера.

window.onunload = function () {
  alert('You are trying to leave.');
  return false;
}
7
ответ дан 24 November 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: