Обновление
Подскажите как сделать так, что бы страница автоматически обновлялась через определённый промежуток времени, но только 1 раз.
|
SerferJS, погуглите:
- top.location.href (href не обязательно), например top.location = 'javascript.ru', также посмотрите метод reload() для этого объекта - window.setTimeout(функцияДляВыполнения, интервалВМиллисекундах) |
Записывай факт обновления в куки, а дальше как написано выше
|
Если вас не затруднит. Напишите это готовым кодом. Дело в том, что я не очень знаком с JS, в основном php.
|
так, на скорую руку:
function setCookie(c_name,value,expiredays) { var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start!=-1) { c_start=c_start + c_name.length+1; c_end=document.cookie.indexOf(";",c_start); if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)) ; } } return ""; } if (getCookie("somename")!="upd") setTimeout("document.location.href=document.locati on.href",5000); setCookie("somename","upd",1); |
FTDeBUGgeR,
Цитата:
|
Спасибо, буду знать
|
Огромное спасибо за код. А насчёт испарвлений: добавления пустой строки или использования метода reload() это как? Пустую строку: top.location = '' + top.location; как я понял просто добавить в код, а вот с reload() я без понятия. Исправте пожалуйста.
|
top.location.reload(); |
Код выглядит так:
function setCookie(c_name,value,expiredays) { var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start!=-1) { c_start=c_start + c_name.length+1; c_end=document.cookie.indexOf(";",c_start); if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)) ; } } return ""; } if (getCookie("somename")!="upd") setTimeout("document.location.href=document.locati on.href",5000); setCookie("somename","upd",1); top.location = '' + top.location; top.location.reload(); Загрузка страницы не происходит. начинается сразу что-то вроде постоянного обновления или просто нежелания дальше грузить страницу. Может тут заменять надо было что. Но я без понятия, а все варианты перепробовать врятли получится. Подскажите как исправить. А то в JS я совсем не силён. |
function setCookie(c_name,value,expiredays) { var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start!=-1) { c_start=c_start + c_name.length+1; c_end=document.cookie.indexOf(";",c_start); if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)) ; } } return ""; } if (getCookie("somename")!="upd") setTimeout(function() { setCookie("somename","upd",1); top.location.reload(); }, 5000); |
Что-то не обновляет страницу. Там где 5000 я понимаю время через которое должно произойти обновление. Так я ставлю 5 секунд, ничего не происходит.
|
SerferJS,
Странно, у меня работает, щас проверю в других браузерах. 5000 - это время в миллисекундах, т.е 5 с = 5000 мс. |
И при 5000 тоже не работает. У меня Opera 9.0. Я скрипт вставляю и в самое начало страницы, и позже, и после php кода, всё равно не работает.
|
Вчера вставил скрипт в начало страницы. Поставил время 3000. В результате при первой загрузке страницы она вроде как обновилась, я даже толком заметить не успел. Но потом сколько не загужаешь, ничего не происходит. Причём проверил в Opere и IE. Везде одинаково. И как тогда сделать, чтобы после очередного открытия страницы она всё же обнавилась?
|
rfc2616
|
Цитата:
|
SerferJS,
У вас cookie, по которой проверяется обновлять/не обновлять ставится на день. Очистите куки и проверьте работоспособность снова. |
А как сделать так, чтобы они удалялись почти сразу после обновления? Что изменить в коде? Заменить expiredays? Скажите как правильно будет. Допустим надо сделать так, чтобы обновление страницы происходило почти сразу после её открытия. Думаю хватит 1 секунды. А потом, если через 10 секунд или 30 секунд я попадал на эту страницу и она опять обнавлялась 1 раз.
|
SerferJS, вообще не надо ставить куки (просто Вас не так поняли, подумали, что надо вообще только один раз перезагрузить). Повесьте на событие onload элемента body функцию рефреша по таймауту.
<body onload="window.setTimeout(function() {top.location.reload(); return true;}, 5000)"> |
Как раз таки правильно поняли. Мне не надо, чтобы страница всё время обновлялась. Мне надо только 1 раз и всё. Только загрузка страницы происходить может в разные промежутки времени: хоть раз в день, хоть каждые 5 секунд.
Вопросы с предыдущего моего сообщения остаются открытыми. З.Ы. А вообще большое спасибо всем кто помогает разобраться с этим. Было бы проще, если бы я знал JS, но к сожелению сейчас совсем нет времени на его изучение. |
зачем тебе нужно это обновление?
|
Что бы скрипт на пхп выполнялся заново, если попасть на страницу во второй раз. Чтобы все переменные обнулялись.
|
SerferJS,
Цитата:
Цитата:
|
SerferJS, а вообще, старайтесь четче формулировать вопросы, потому что вот это:
Цитата:
|
ds [.code], постараюсь сформулировать попонятнее. В общем так.
Необходимо при КАЖДОЙ загрузке страницы сделать так, чтобы она обновлялась ОДИН раз. Дело в том, что на странице есть сложный php код, который сохраняет несколько переменный в глобальных массивах, которые нельзя удалять. При выполнении скрипта, после отправки формы на странице, пользователь получает таблицу с результатами на этой же странице. Но даже если перенаправить его на другую страницу, а потом опять на исходную, то глобальные переменные остаются и скрипт не выполняется как надо. Для того чтобы он правильно функционировал, необходимо обновить страницу. Тогда внутри скрипта произойдёт необходимая генерация и выполнение функций, всё переменные обновятся. Таким образом всё, что мне необходимо это, чтобы вы мне ответили на уже заданные вопросы: А как сделать так, чтобы cookie удалялись почти сразу после обновления? Что изменить в коде? Заменить expiredays? Скажите как правильно будет. Допустим надо сделать так, чтобы обновление страницы происходило почти сразу после её открытия. Думаю хватит 1 секунды. А потом, если через 10 секунд или 30 секунд я попадал на эту страницу, она опять обнавлялась 1 раз. Эти вопросы относятся к уже приведённому здесь коду. Помогите пожалуйста. |
SerferJS, упс, пардон, я, конечно же, ошибся с предыдущим кодом =) - там будет постоянно обновляться. Да, надо поставить куки. Алгоритм, примерно, такой: в onload проверяете, если нет куки, то ставим куку и рефрешим, если же кука есть - удаляем (процедура аналогична установки куки, за исключением того, что надо задать просроченный период хранения (expires), например - expires=Thu, 01-Jan-1970 00:00:01 GMT) и не рефрешим.
<body onload=" if (кукаЕсть) { удаляемКуку(); return true; } ставимКуку(); делаемРелоад(); " > P.S.: по поводу Вашего "сложного php-кода", я думаю, Вам стоит подумать о переорганизации логики скрипта, а не о уловках типа перезагрузки страницы. |
ds [.code], если можно, переделай предыдущий код с учётом твоих замечаний, а то сейчас совсем нет времени. Да и я могу напутать что-нить. Потому что в JS я совсем слаб. Ну а если нет, то я сам как-нить попозже разберусь, может быть.
З.Ы. С PHP кодом там пока всё хорошо. Просто очень сложная функциональность и много средств защиты. |
Что-то не получается у меня.
Помогите вот это: function setCookie(c_name,value,expiredays) { var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start!=-1) { c_start=c_start + c_name.length+1; c_end=document.cookie.indexOf(";",c_start); if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)) ; } } return ""; } if (getCookie("somename")!="upd") setTimeout(function() { setCookie("somename","upd",1); top.location.reload(); }, 5000); совместить с этим: <body onload=" if (кукаЕсть) { удаляемКуку(); return true; } ставимКуку(); делаемРелоад(); " > Переделайте пожалуйста. |
используй тэги [ js ] [ /js ]
|
SerferJS,
Цитата:
Попробуйте найти аналогию и действительно поразбираться, потому что писать полностью за Вас никто не будет, если у Вас даже желания нет понять как это работает. 1. if (getCookie("somename")) => if (кукаЕсть); 2. удаляемКуку(); => делаем setCookie(...), expiredays устанавливаем -1; 3. ставимКуку(); => делаем setCookie(...); 4. делаемРелоад(); => top.location.reload(); P.S.: форум - это не то, что, человек пришел и говорит: "ребятки, напишите-ка мне скрипт, да побыстрей, пожалуйста". Как минимум у человека должны быть свои наработки по интересующему вопросу. И конкретно вопрос - где именно и что у него не получается. А на форуме уже подскажут в каком направлении надо двигаться, чтобы решить задачу. P.S.[2]: это, кстати, и к отвечающим относится - какой смысл выкладывать полностью "от и до" работающий код по первому же запросу "ребята, дайте код". Тем самым вы не поможете человеку, особенно, если при этом у него нет желания самому разобраться, что происходит в этом коде. Я понимаю, что большинство интересует комбинация Ctrl+C (на форуме в готовом коде), Ctrl+V (у себя в редакторе), но это не программирование. P.S.[3]: однако, я вовсе не против выкладываний полных кодов (и сам часто выкладываю) - иногда это интересно, особенно, если задача интересная. Тут просто важен подход тех, кто просит помочь. |
Что-то не получается у меня.
Помогите вот это: function setCookie(c_name,value,expiredays) { var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start!=-1) { c_start=c_start + c_name.length+1; c_end=document.cookie.indexOf(";",c_start); if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)) ; } } return ""; } if (getCookie("somename")!="upd") setTimeout(function() { setCookie("somename","upd",1); top.location.reload(); }, 5000); совместить с этим: <body onload=" if (кукаЕсть) { удаляемКуку(); return true; } ставимКуку(); делаемРелоад(); " > Помогите пожалуйста |
Я пробовал это соедениять. С учётом условий. Но я вообще не знаю JavaScript! И посему совсем слабо представляю как это сделать.
И только поэтому прошу вас сделать это за меня. Помогите пожалуйста. P.S.ds [.code], то что вы написали 4 пункта на которые надо опираться это очень хорошо. Если бы я знал JS, то с радостью разобрался бы. |
Помогите пожалуйста...
|
Часовой пояс GMT +3, время: 10:33. |