Я написал функцию, которая будет перезагружать страницу без пост-отправки и работать с хешами.
Я делаю это, добавляя / изменяя параметр GET в URL-адресе с именем reload
, обновляя его значение текущей меткой времени в мс.
var reload = function () {
var regex = new RegExp("([?;&])reload[^&;]*[;&]?");
var query = window.location.href.split('#')[0].replace(regex, "$1").replace(/&$/, '');
window.location.href =
(window.location.href.indexOf('?') < 0 ? "?" : query + (query.slice(-1) != "?" ? "&" : ""))
+ "reload=" + new Date().getTime() + window.location.hash;
};
Имейте в виду, что если вы хотите вызвать эту функцию в атрибуте href, реализуйте ее следующим образом: href="javascript:reload();void 0;"
, чтобы она успешно работала.
Недостатком моего решения является то, что он изменит URL, так что эта «перезагрузка» не является реальной перезагрузкой, а представляет собой загрузку с другим запросом. Тем не менее, он может соответствовать вашим потребностям, как и для меня.