我有两个JS
函数,一个是为选择框
添加选项
- function addOption(selectId,text,value) {
- var selectBox = document.getElementById(selectId);
- var optNew = document.createElement('option');
- optNew.text = text;
- optNew.value = value;
- try {
- selectBox.add(optNew,null); //page position resets after this
- }
- catch(ex) {
- selectBox.add(optNew);
- }
- }
另一个在类似的简单函数中执行document.getElementById(formId).appendChild(newHiddenInput).
他们都工作,元素按预期添加.但是,在调用它们中的任何一个时,页面将其滚动位置重置为IE6和FF中的页面顶部.没有回发,这纯粹是客户端操纵.我在Firebug中设置了断点,它在element.appendChild或select.add执行后立即发生.我知道我可以使用JS手动设置滚动位置,但我不认为在页面没有被重新渲染时是必要的.
我不是JS或DOM的专家,所以我很可能会遗漏一些东西,但我看了here并使用Try it Here选项运行他们的示例我无法复制问题,表明代码库我与之合作是罪魁祸首.
任何想法为什么滚动位置被重置?如果它提供了更好的替代方案,我也可以使用jQuery.
如果从
链接调用函数,则
链接中可能包含内部锚点:
- http://www.website.com/page.html#
这导致了所述行为.默认行为是,如果锚不存在,页面滚动位置将跳转到顶部(scrollTop = 0).
如果在每个函数调用中都发生这种情况而不管源是什么,那么这可以从列表中删除.