Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Повторная многоразовая перезагрузка страницы (https://javascript.ru/forum/events/70748-povtornaya-mnogorazovaya-perezagruzka-stranicy.html)

Даниль1983 29.09.2017 15:42

Повторная многоразовая перезагрузка страницы
 
Пожалуйста, ответьте, как можно исправить данный баг:

Я делаю программное отправление данных формы с помощью submit при загрузки страницы, до того как пользователь начал работу со страницей, такой код:
<body onLoad="setTimeout('document.form.submit.click()', 1000)" >
Но действие повторяется повторно много раз. Как сделать, чтобы выполнялся и страница работала дальше в своём режиме?

ksa 29.09.2017 15:54

Цитата:

Сообщение от Даниль1983
Как сделать, чтобы выполнялся и страница работала дальше в своём режиме?

Не перезагружать страницу...

Но это больше претензии к самому обработчику клика на элементе формы...
Цитата:

Сообщение от Даниль1983
Я делаю программное отправление данных формы с помощью submit при загрузки страницы

Ты просто имитируешь клик на элементе формы и не более того... Дальше все делается в обработчике клика, который мы пока не видели. Все дело именно в нем.

Даниль1983 30.09.2017 10:11

А у меня его и нет. Есть один но он не для него. Напишите пожалуйста, какой должен быть для него.

Другой, для других целей, вот такой:
function mouseClick(){
    var pageX = 'pageX' in event ? event.pageX : event.clientX + document.documentElement.scrollLeft;
    var pageY = 'pageY' in event ? event.pageY : event.clientY + document.documentElement.scrollTop;
    if (document.getElementById('mouseX').value==''){
    document.getElementById('mouseX').value = pageX*1000/document.body.clientWidth;
    document.getElementById('mouseY').value = pageY*1000/document.body.clientHeight;}
    document.getElementById('hiddenX').value = document.body.clientWidth+1;
    document.getElementById('hiddenY').value = document.body.clientHeight+1;

}
</script>

Даниль1983 30.09.2017 10:22

Думал стандартного обработчика достаточно, а действительно его не достаточно мне.

Мне нужно до загрузки выполнить вот эти два присваивания:
document.getElementById('hiddenX').value = document.body.clientWidth+1;
document.getElementById('hiddenY').value = document.body.clientHeight+1;

j0hnik 30.09.2017 12:41

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<input id="hiddenX">
<input id="hiddenY">
<script>
document.getElementById('hiddenX').value = document.body.clientWidth+1;
document.getElementById('hiddenY').value = document.body.clientHeight+1;
</script>
<!-- остальной код разметки -->
</body>
</html>

Даниль1983 30.09.2017 15:13

Так не работает. Первое что я попробовал это так и сделать. Дело в том что, как видно, я использую скрытые поля. Они должны передаться на сервер, ещё до начала работы клиента. Вот что я делаю:

<html  onclick="mouseClick();">

...
<script>
function mouseClick(){
    var pageX = 'pageX' in event ? event.pageX : event.clientX + document.documentElement.scrollLeft;
    var pageY = 'pageY' in event ? event.pageY : event.clientY + document.documentElement.scrollTop;
    if (document.getElementById('mouseX').value==''){
    document.getElementById('mouseX').value = pageX*1000/document.body.clientWidth;
    document.getElementById('mouseY').value = pageY*1000/document.body.clientHeight;}
    document.getElementById('hiddenX').value = document.body.clientWidth+1;
    document.getElementById('hiddenY').value = document.body.clientHeight+1;
}   
</script>


Я передаю данные после клика на странице пользователем, а надо чтобы данные полей отправлялись на сервер до того как пользователь увидел окно страницы, или по таймауту 1000 мс. Однако все решения имеют неприемлемый недостаток в виде постоянной перезагрузки страницы, не один ответ и не одна моя попытка ещё не сумела остановить перезагрузки после первой таковой.

j0hnik 30.09.2017 15:18

мне интересно, для чего все эти манипуляции?

Даниль1983 30.09.2017 15:34

Средствами PHP нельзя узнать разрешение монитора пользователя.

Или покажите как эту задачу решить ajax-ом. w.tetradka33.ru

Цитата:

Сообщение от j0hnik
мне интересно, для чего все эти манипуляции?

Чтобы вычислять координаты на экране корректно, при любых разрешениях экрана. Масштабирование, наверно, можно назвать.


Часовой пояс GMT +3, время: 12:55.