Как предотвратить повторение себя в window.onload
Я пытаюсь выполнить действие js, которое автоматически отправляет информацию на URL для будущего использования с php. Для этого я добавил событие "onload" в объект окна и изменил URL в слушателе. Вот как это выглядит до сих пор:
window.addEventListener("load", function() {
window.location = "?test=test";
}, false);
Когда я загружаю страницу, URL-адрес меняется, но это повторяется снова и снова, пока не произойдет сбой браузера. Мне просто интересно, есть ли способ выполнить его только один раз.
6 ответов
Если вы не хотите использовать AJAX и не хотите писать функции JS для разбора строк запроса, почему бы не просто:
<?php if(!isset($_GET['test'])): ?>
<script>
window.addEventListener("load", function() {
window.location = "?test=test";
}, false);
</script>
<?php else: ?>
<!--No JS written on the page, so no redirect -->
<?php endif;?>
Но вы действительно должны изучить AJAX, попробуйте использовать некоторые JS-фреймворки, такие как jQuery, чтобы помочь вам в этом процессе: http://api.jquery.com/jquery.ajax/
Вы можете просто стереть onLoad
метод после запуска, вот так:
<script>
function doLoadStuff()
{
doSomeStuff();
//Clear onLoad contents
body.onLoad = function() {};
}
</script>
<body onLoad="doLoadStuff();">MyContent</body>
Добавьте простой флаг в URL, например, так: window.location = "?test=test&second=true";
Если вы хотите передать переменные, сделайте это:
<?php
if(!isset($_GET['page'])){ //this line check if the variable field is available
$a = "Blank";
}else{
$a = $_GET['page'];
}
?>
это оно.
Убедитесь, что вы уже на этой странице, прежде чем перенаправлять.
Как предложено в разделе Как получить значения строки запроса в JavaScript?
Напишите функцию для проверки получения параметров URL в JS GetQueryStringParams()
Затем, как предлагают другие, передайте параметр send во время перезагрузки.
window.location = "?test=test&second=true";
Используйте функцию в JS, чтобы проверить, есть ли у вас вторая строка запроса URL, а если ее нет, перезагрузите страницу.