To change the URL of the page without compromising content (refresh) just use the following code.
Javascript
window.history.pushState("objeto ou string", "Titulo", "/url");
DEMO of the code above working
HTML Adapted with the code @Patrick .
<head>
<!-- Sempre importe as bibliotecas antes de tentar trabalhar com elas. -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
// Checa se a página foi carregada para evitar aplicar os códigos antes de ter algum elemento não carregado. Pode-se usar também "$(function(){".
$(document).ready(function(){
$(".ajax").on("click", function(e){
e.preventDefault(); //eliminamos o evento
var path = $(this).attr("href"); //Pegamos o caminho
var titulo = $(this).attr("title"); //pegamos o titulo da página
document.title = titulo; // Alterar o titulo da página
window.history.pushState("", titulo, path);
$("main").empty(); //Limpa para poder colocar o conteúdo.
$("main").load(path); //Faz uma requisição http para o servidor.
});
});
</script>
</head>
<body>
<!-- No caso, o header é a parte fixa, que não muda. -->
<header>
<div>"Aqui fica o player de audio."</div>
<ul>
<li><a href="home.html" class="ajax" title="Meu site">Home</a></li>
<li><a href="sobre.html" class="ajax" title="Meu site - Sobre">Sobre</a></li>
</ul>
</header>
<main>
<!-- Aqui é onde o conteúdo vai ser carregado. -->
</main>
</body>
To use the data-
parameter and retrieve the value with JQuery
you must use $ .data
Jquery
$(function(){
var texto;
//Recuperar do data-value
texto = $('a.value').data('value');
$('.resultado').append('<li>' + texto + '</li>');
//Recuperar do data-titulo
texto = $('a.titulo').data('titulo');
$('.resultado').append('<li>' + texto + '</li>');
//Recuperar do data-target
texto = $('a.target').data('target');
$('.resultado').append('<li>' + texto + '</li>');
//Recuperar do data-meuVar
texto = $('a.meuVar').data('meuvar');
$('.resultado').append('<li>' + texto + '</li>');
});
This is my example HTML
HTML
<a href="#" class="value" data-value="texto do data-value"></a>
<a href="#" class="titulo" data-titulo="texto do data-titulo"></a>
<a href="#" class="target" data-target="texto do data-target"></a>
<a href="#" class="meuVar" data-meuvar="texto do data-meuvar"></a>
<ul class="resultado"></ul>
This code will show list
- data-value text
- date-title text
- data-target text
- date-myvar text
You can keep track of the code working at DEMO