Agregar parámetro a URL sin actualizar

Sé que esto se ha preguntado muchas veces antes, pero las respuestas no fueron lo suficientemente descriptivas para resolver mi problema. No quiero cambiar la URL completa de la página. Quiero agregar un parámetro&item=brand al hacer clic en el botón sin actualizar.

Utilizandodocument.location.search += '&item=brand'; hace que la página se actualice.

Utilizandowindow.location.hash = "&item=brand"; agregar sin actualizar pero con un hash# que elimina el uso / efecto del parámetro. Traté de eliminar el hash después de agregar pero eso no funcionó.

Esta respuesta y muchos otros sugieren el uso de HTML5 History API, específicamente elhistory.pushState y para navegadores antiguos es establecer un identificador de fragmento para evitar que la página se vuelva a cargar. ¿Pero cómo?

Asumiendo que la URL es:http://example.com/search.php?lang=en

¿Cómo puedo agregar&item=brand usando el método HTML5 PushState o un identificador de fragmento para que la salida sea así:http://example.com/search.php?lang=en&item=brand sin una actualización de página?

Espero que alguien pueda arrojar algo de luz sobre cómo usar HTML5 pushState para agregar un parámetro a una URL existente / actual. O, alternativamente, cómo establecer un identificador de fragmento para el mismo propósito. Un buen tutorial, demostración o código con una pequeña explicación sería genial.

Manifestación de lo que he hecho hasta ahora. Tus respuestas serán muy apreciadas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta