¿Cómo evitar el reinicio de la posición de desplazamiento de la página después de la manipulación del DOM?

Tengo dos funciones JS, una que agrega opciones a un cuadro de selección

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); } } 

y otro que está haciendo un document.getElementById (formId) .appendChild (newHiddenInput) en una función similarmente simple.

Ambos funcionan, los elementos se agregan como se espera. Sin embargo, al llamar a cualquiera de ellos, la página restablece su posición de desplazamiento a la parte superior de la página en IE6 y FF. No hay devolución de datos, esto es pura manipulación del lado del cliente. Establecí puntos de interrupción en Firebug, y ocurre inmediatamente después de que se ejecute el elemento.appendChild o select.add. Sé que puedo usar JS para establecer manualmente una posición de desplazamiento, pero no creí que fuera necesario cuando la página no se vuelve a procesar.

No soy un experto con JS o el DOM, así que es posible que me esté perdiendo algo, pero he buscado aquí y revisé sus ejemplos con las opciones de Pruébalo aquí y no puedo replicar el problema, indicando la base de código I Estoy trabajando con el culpable.

¿Alguna idea de por qué se está restableciendo la posición de desplazamiento? jQuery también está disponible para mí si proporciona una mejor alternativa.

Si las funciones se están llamando desde un enlace, es posible que tenga un delimitador interno en su enlace:

 http://www.website.com/page.html# 

Esto está causando dicho comportamiento. El comportamiento predeterminado es que si no existe un delimitador, la posición de desplazamiento de la página salta a la parte superior ( scrollTop = 0 ).

Si esto ocurre en cada llamada de función independientemente de la fuente, esto puede tacharse de la lista.

¿Qué está activando el evento?

Si es un ancla, entonces en el evento click debes “devolver falso”; después de la llamada a su código jQuery / Ajax / jScript.

Si se trata de un botón, es posible que deba hacer lo mismo.

Tuve este problema ayer y esta fue la resolución.

Entonces My link