У меня есть страница, которая автоматически обновляется с помощью javascript, и она обновляется со всеми параметрами в URL, например. server/ViewRoom.aspx? RoomID = 5 & ConfirmID = 4834 Я хотел бы сохранить параметр RoomID.
Мой код на данный момент:
<script type="text/javascript">
var timeout = setTimeout("location.reload(true);", 50000); // How often do you want the initial page to refresh?
function resetTimeout() {
clearTimeout(timeout);
timeout = setTimeout("location.reload(true);", 50000); // How often do you want the page to refresh?
}
</script>
Как я могу только выбрать строку запроса RoomID для перезагрузки
Как упоминал Edmund24, вам не нужно очищать таймаут, так как вы перезагружаете страницу, поэтому наш код выглядит так:
<script type="text/javascript">
var timeout = setTimeout("location.reload(true);", 50000);
</script>
Точно так же нам не нужно отслеживать идентификатор обработчика, поэтому мы можем игнорировать его сохранение:
<script type="text/javascript">
setTimeout("location.reload(true);", 50000);
</script>
Основная проблема с кодом Эдмунда заключается в том, что в случае, если строка запроса RoomID не является первой строкой запроса в URL-адресе, это не будет вести себя так, как вы ожидали. Поэтому вместо этого нам нужно явно искать и захватывать строку запроса, содержащую "RoomID":
<script type="text/javascript">
setTimeout(function () {
var domain = location.href.split('?')[0],
queryStrings = location.href.split('?')[1].split('&'),
roomIDqs;
queryStrings.forEach(function (e, i, a) {
if(~e.indexOf('RoomID')) roomIDqs = e;
});
location.href = domain + roomIDqs;
}, 50000);
</script>
Я не тестировал этот код, но это должна быть идея.
Заметки:
Я не думаю, что вам нужен явный тайм-аут, так как перезагрузка происходит.
<script type="text/javascript">
setTimeout( function () { location.href = location.href.split('&')[0]; }, 50000);
</script>
Приведенный выше код имитирует refrash, передавая измененный href (все после первого и удаляется) href вашего текущего местоположения
location.search = location.search.substring(0,location.search.indexOf('&'))
, еслиRoomID
всегда первый параметр.reload()
, потому что.reload()
просто загружает текущую страницу и не имеет никакого контроля над URL. вместо этого вы можете извлечь текущий URL страницы, удалить из него ненужные параметры и затем загрузить эту страницу через js