2013-08-05 2 views
1

Может кто-нибудь помочь мне добавить ось X в мое обновление без прокрутки. Я не хочу, чтобы он прокручивался вверх или влево на каждом обновлении, что очень часто.Добавить ось X в No Scroll Refresh

<script type="text/javascript"> 
function refreshPage() { 
    var page_y = document.getElementsByTagName("body")[0].scrollTop; 
    window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y; 

} 
    window.onload = function() { 
     setTimeout(refreshPage, 1700); 
      if (window.location.href.indexOf('page_y') != -1) { 
       var match = window.location.href.split('?')[1].split("&")[0].split("="); 
       document.getElementsByTagName("body")[0].scrollTop = match[1]; 

                   } 
            } 
</script> 

ответ

0

Использование:

function refreshPage() { 
    var page_y = document.getElementsByTagName("body")[0].scrollTop; 
    var page_x = document.getElementsByTagName("body")[0].scrollLeft; 
    window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y + "&page_x=" + page_x; 
} 
window.onload = function() { 
    setTimeout(refreshPage, 10000); // you can change the timer again but I don't recommend making it too fast 
    var match = window.location.href.split('?')[1].split("&");  
    if (window.location.href.indexOf('page_y') != -1) { 
     document.getElementsByTagName("body")[0].scrollTop = match[0].split("=")[1]; // page_y 
    } 
    if (window.location.href.indexOf('page_x') != -1) { 
     document.getElementsByTagName("body")[0].scrollLeft = match[1].split("=")[1]; // page_x 
    } 
} 
+0

Зачем кому-то занижать этот ответ, это прекрасно !!!!!!!!! – chriswiec

2

Это уже поведение браузеров (по крайней мере, я тестировал в Firefox и Chrome).

Хотя, это не делает это из-за того, как вы делаете перезагрузку. При перезагрузке метода он работает нормально.

//location.reload(forceGet): forceGet is false by default 
//false will make it load from the cache 
window.location.reload() 

Но если вы действительно хотите сделать это вручную

var page_y = window.scrollY; 

window.scrollTo(0, match[1]) 

В текущем коде, это будет выглядеть следующим образом:

<script type="text/javascript"> 
function refreshPage() { 
    var doc = document.documentElement 
    var body = document.body; 
    var page_y = window.scrollY || ((doc && doc.scrollTop) || (body && body.scrollTop || 0)) - (doc.clientTop || 0); 
    window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y; 
} 
window.onload = function() { 
    setTimeout(refreshPage, 1700); 
    if (window.location.href.indexOf('page_y') != -1) { 
     var match = window.location.href.split('?')[1].split("&")[0].split("="); 
     window.scrollTo(0, match[1]); 
    } 
} 
</script> 

Я не знаю, что вы хотите сделать, Но я бы предложил изменить что-то локально, если вам нужно, и не перезагружать всю страницу.

Редактировать

Для работы на нескольких платформах, используя this решения.

+0

ждать Я использую IE10 и этот браузер только IE10 и обновить его прокручивается вверх и влево, если я не установлено иначе. и мне нужно обновить мою страницу каждые 1.7 seconfds. – chriswiec

+0

Я только что протестировал с IE9, и 'scrollTo', похоже, работает. Это сработало для вас? – wendelbsilva

+0

ну, я не смущен, где добавить код. Я не вижу, как он будет обновляться каждые 1,7 секунды с тем, что у вас есть, я чего-то не хватает? Он не может прокручиваться вверх или влево. – chriswiec

Смежные вопросы