Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > обновить содержимое страницы


Автор: Samotnik 15.2.2008, 17:21
САБЖ!
есть страничка,  с како-либо инфой.   Нужно  сделать кнопочку, по нажатию на которую, поризошло бы  обновление содержимого на этой  странице   
(Т.е. нужно сделать кнопку, которая  будет работать, как   стандартная  броузерская   Refresh )

Автор: Golda 15.2.2008, 17:44
Код

window.location.href = 'http://your/url.html';


Добавлено через 4 минуты и 21 секунду
А лучше

Код

window.location.href = window.location.href;


или просто 

Код

window.location.reload();

Автор: Samotnik 15.2.2008, 17:54
Golda,   так мне нужно кнопочку  сделать, по нажатию которой  будет  вызываться  вот это 
Код

window.location.reload();

А сейчас оно  работает,  как только  заходиш на страницу,  она сразу же перегружается !  

Автор: Samotnik 15.2.2008, 18:32
Т.е.   это НЕ реально сделать впринципе ????   smile 
Я пытаюсь сделать так
Код

document.write('<form><input type=button value="Refresh" onClick="history.go()"></form>')

Но никакой кнопки не появляется, а появляется мессага при открытии этой странице с предложением обновить ее.     А мне нужно, чтоб страница загрузилась,  и была открытая, столько, чколько понадобится!   И в любое время нажав на кнопочку, юзер смог обновить ету страницу
 smile 
Пэ.Эс.
Тестирую на  FireFox


Автор: Ghirik 15.2.2008, 18:39
Нет, ну вы народ то пожалейте...

Код

<p><input type="button" value="Кнопка" onclick="window.location.reload();"></p>

Автор: Samotnik 15.2.2008, 18:41
Ghirik,   у меня  файл    .js  я не могу туда  код с тегами  всунуть,    если бы мог, я б это сделал  за 1 минуту!       

Автор: Ghirik 15.2.2008, 18:47
А в каком месте у вас выведется кнопка - побарабану?

Добавлено через 46 секунд
Или вы знаете какие то теги на странице по ID? Куда нужно эту кнопку воткнуть.

Автор: bars80080 15.2.2008, 18:50
Код

document.write('<form><input type=button value="Refresh" onClick="window.location.href=\'?time=<? echo time(); ?>\'"></form>')

это если на сервере пхп, если нет, то заместо <? echo time(); ?> вставь какое нибудь число образованное js, то же время. при каждом новом открытии этой страницы, оно будет новым и точно вызовет перезагрузку без вопросов об устаревании

Автор: Samotnik 15.2.2008, 18:52
Цитата(Ghirik @  15.2.2008,  18:47 Найти цитируемый пост)
А в каком месте у вас выведется кнопка - побарабану?

в принципе  пока  ДА 

Автор: Ghirik 15.2.2008, 18:55
Код

document.body.innerHTML += '<p><input type="button" value="Кнопка" onclick="window.location.reload();"></p>';



Автор: Samotnik 15.2.2008, 19:40
нифига не работает  
 smile  smile  smile  smile  smile 
 smile  smile  smile  smile

Добавлено через 7 минут и 33 секунды
у меня даже кнопка не отображается   smile 
пишу так 
Код

com_main = function(task) {
}

com_main.prototype.init = function() {
    var dlg = this.dlg = this.task.dlg;
   document.write('<form><input type=button value="Refresh" onClick="history.go()"></form>')
    dlg.getContentDiv().style.overflow = "hidden";
   
    var data = "";
    sfSystem.callAction("NewAction", data, this.callback, this);
}


Добавлено через 13 минут и 56 секунд
каково  черта  она  слздается на новой  странице ???   а  не на той  где мне нужно !!!!    
Т.е.  при открытиии страницы, появляется еще одна страница с этой долбанной кнопкой !!!
Я злой  до ужаса,  не могу даже кнопку  создать на страничке !!!!   smile 

Автор: Ghirik 15.2.2008, 20:01
Скорее всего ваш файл подключается до загрузки страницы, в заголовке.
Тогда попробуйте сделать так:

Код

function on() {
document.getElementById('p1').innerHTML += '<input type="button" value="Кнопка" onclick="window.location.reload();">';
}
window.onload = on;


Хотя, может возникнуть конфликт, если window.onload уже где то назначается(не пробовал).

Автор: jaspeen 15.2.2008, 21:00
Цитата(Ghirik @  15.2.2008,  18:01 Найти цитируемый пост)
Хотя, может возникнуть конфликт, если window.onload уже где то назначается(не пробовал).

Че нить такое поможет:
Код

var oldwo = window.onload;
window.onload = function(){
  //присобачим кнопочку
  var btn = document.createElement("input");
  btn.value = "ЖМИ";
  btn.onclick = window.location.reload;
  document.body.appendChild(btn);
  
  //your code here
  
  //старый window.onload
  if(oldwo)
    oldwo();
}



Автор: Ghirik 15.2.2008, 21:06
Цитата

каково  черта  она  слздается на новой  странице ???   а  не на той  где мне нужно !!!!    
Т.е.  при открытиии страницы, появляется еще одна страница с этой долбанной кнопкой !!!
Я злой  до ужаса,  не могу даже кнопку  создать на страничке !!!!  


Блин! Он злой! Всем голову заморочил и злой!  smile 

Автор: Samotnik 15.2.2008, 22:53
Цитата(Ghirik @  15.2.2008,  21:06 Найти цитируемый пост)
Всем голову заморочил и злой!

 smile  smile 
Да я  злой, т.к.  писал  серьезные приложения,  а тут   обычная кнопка создавацца не хочет,  я просто в шоке  (раньше это делал  тысячи раз, а тут  такое,   конечно же  злой )

Автор: dsCode 15.2.2008, 22:54
что-то мутное творится =)

file.js

Код

var reload = function () {
  top.location = '' + top.location; // пустые кавычки нужны для IE
  return true;
}


file.html
Код


<script type="text/javascript" src="file.js"></script>
<input type="button" onclick="reload(); return true;" value=".refresh" />

Автор: Samotnik 15.2.2008, 22:57
dsCode,  у меня есть  тупо файл    File.js   т.е.   html  теги  незя юзать  

Автор: Ghirik 16.2.2008, 00:26
Samotnik, я же вам написал как сделать.

Код

function on() {
document.getElementById('p1').innerHTML += '<input type="button" value="Кнопка" onclick="window.location.reload();">';
}
window.onload = on;


Вы это пробовали?
У меня это работает.

Добавлено через 1 минуту и 3 секунды
Отдельную функцию создайте и пропишите строчку window.onload = on;

Автор: dsCode 16.2.2008, 00:27
А, не досмотрел =) Тогда, все должно через DOM-функции создасться и работать (немного измененный вариант jaspeen'a):

Код

var button = document.createElement('input');
button.value = '.refresh';
button.onclick = function() {
  top.location = '' + top.location;
  return true;
}
document.getElementsByTagName('body')[0].appendChild(button);


Кстати, есть один нюанс - если локейшн содержит якорь (#), то подобная конструкиця top.location = '' + top.location; не обновит страницы - придется сначала вырезать якорь.

Автор: Ghirik 16.2.2008, 00:36
dsCode, а reload() что не везде работает? Я вроде проверил и FF и IE перегужают...

Автор: Ghirik 16.2.2008, 00:55
http://door-to.ru/LamerPhotoBlog/scripts/title_block4.htm всё прекрасно перегружается.


Автор: solenko 16.2.2008, 01:10
Осталось только 
Код

window.onload = on
//заменить на что-то типа
if('addEventListener' in window){
    window.addEventListener('load', on, false);
} else {
    window.attachEvent('on', testevent);
}

иначе не будет срабатывать при верстке
Код

<body onload="älert('!'');">

Автор: dsCode 17.2.2008, 16:33
Цитата(Ghirik @  16.2.2008,  00:36 Найти цитируемый пост)
dsCode, а reload() что не везде работает? Я вроде проверил и FF и IE перегужают... 

а, честно - не проверял =) ну раз работает - значит славно )

Автор: Samotnik 18.2.2008, 14:12
ок, пасибо всем,  tit вопорс, почему когда я создаю эту кнопку 
Код

 var butn = document.createElement('button');
         butn.setAttribute("value", "Press me");
         butn.setAttribute("onClick", "functionClick();");
         dlg.getContentDiv().appendChild(butn);

то кнопка очень  маленькая (3 мм  на 1 см  smile )  и на ней нету надписи (хотя по идее должно быть написанно Press me)

Автор: Samotnik 18.2.2008, 15:08
dsCode,  спасибо, с обновлением разорался,  а как быть если страница на AJAX  ??   Ведь тупо обновить ее нельзя!!   
Как в таком случае обновление сделать ?? 
 smile 

Автор: solenko 18.2.2008, 17:10
Samotnik, ну так то уже зависит от конкретного приложения. В идеале оно (приложение) использует якоря и обноится корректно. Не в идеале -- никак, имхо.

Автор: sergejzr 18.2.2008, 17:24
Цитата(Samotnik @  15.2.2008,  18:40 Найти цитируемый пост)
каково  черта  она  слздается на новой  странице ???   а  не на той  где мне нужно !!!!    
Т.е.  при открытиии страницы, появляется еще одна страница с этой долбанной кнопкой !!!
Я злой  до ужаса,  не могу даже кнопку  создать на страничке !!!!   smile  


При вызове "document.write" старый документ уничтожается, в этом заключалась одна из проблем автора. 

Вместо это строчки можно просто подвесить кнопку. Наример:


Код

com_main = function(task) {
}
com_main.prototype.init = function() {
    var dlg = this.dlg = this.task.dlg;
  
//
 var butn = document.createElement('div');
butn.innerHTML='<p><input type="button" value="Кнопка" onclick="window.location.reload();"></p>'
document.body.appendChild(butn);
//


    dlg.getContentDiv().style.overflow = "hidden";
   
    var data = "";
    sfSystem.callAction("NewAction", data, this.callback, this);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)