2014-08-30 96 views
1

我有以下JavaScript函数;当我单独使用重新加载时它工作正常,并且在我单独使用滚动时工作正常;但是当我将两者结合在一起时它不会滚动;我试图改变序列,但没有帮助;JavaScript重新加载滚动

function myFunction() { 
    window.open("http://www.example.com"); 
    location.reload(true); 
    window.scrollBy(0,1000); 
} 

在此先感谢您的帮助。

+0

因此,您要重新加载页面,然后滚动1000px? – Pavlo 2014-08-30 20:01:09

+0

是的,我完全想要 – Abbas1999 2014-08-30 20:02:03

+1

如何在dom存储中做到这一点? – Abbas1999 2014-08-30 20:03:20

回答

2

您可以将散列设置为somehash,然后重新加载页面。之后,在你的身体onload中,检查散列,如果散列是somehash,请滚动页面。

function myFunction() { 
    window.open("http://www.example.com"); 
    location.hash = 'somehash'; 
    location.reload(true); 
} 

将以下函数添加到您的页面onload事件处理函数。

function scrollOnload() { 
    if (location.hash == 'somehash') { 
     window.scrollBy(0,1000); 
    } 
} 
+0

不错的选择,虽然我会选择比“somehash”更有意义的东西。 :) – Pavlo 2014-08-30 20:14:08

+0

谢谢nisargjhaveri;我会尝试一下,并让你知道。 – Abbas1999 2014-08-30 20:14:56

+0

@Pavlo,很明显:P – nisargjhaveri 2014-08-30 20:24:15

1

如果您想让浏览器在重新加载后做某些事情,您需要将标志保留在某处。这里是一个使用示例sessionStorage

function myFunction() { 
    window.open("http://www.example.com"); 
    sessionStorage.setItem('scroll', true); 
    location.reload(true); 
} 

document.body.addEventListener('load', function() { 
    if (sessionStorage.getItem('scroll')) { 
     window.scrollBy(0, 1000); 
     sessionStorage.removeItem('scroll'); 
    } 
}); 
+0

非常感谢Pavlo;我喜欢两种解决方案.. – Abbas1999 2014-08-30 21:27:11