URL ändern ohne Seite zu laden

tsbmusic

Erfahrenes Mitglied
Hi Leute!

Ich hab das jetzt so hinbekommen, das das funktioniert wie bei Facebook mit dem Seitenladen. Nur wenn ich dann auf aktualisieren klicke komme ich immer zur ersten Seite zurück, weil die Adresse davon ja noch in der Adressleiste steht. Wie kann ich das also ändern, ohne das die Seite neu geladen wird?

Gruss
tsbmusic
 
Und wie kann ich das dann machen, das der wenn die Seite neu geladen wird auch dieser Inhalt von der URL geladen wird?
 
Du ließt beim Laden der Seite den Inhalt des Hashs aus und lädst entsprechend den Inhalt. In welcher Form du die Werte speicherst bleibt dir überlassen.
 
Sei kreativ!

Javascript:
location.hash = "!foo=bar&bla=blub";

alert(location.hash);

var all = location.hash.substr(2).split(/&|=/);
var vars = {};

for(var i=0; i<all.length; i+=2)
	vars[all[i]] = all[i+1]

alert(vars["foo"]);
alert(vars["bla"]);
 
Danke. Das funktioniert schonmal, nur das erst immer die eigentliche Seite geladen wird und dann zu der neuen umspringt. Und das soll nicht so sein. Wie kann ich das machen?

Mein Code sieht jetzt so aus:
Code:
function nav(url, name, v){
    $('#sidebar .menu #loader').each(function(){
        $(this).hide();
    });
    $('#sidebar .menu li.'+name+' a').prepend('<div id="loader"><img src="images/loader.gif"></div>');
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("content").innerHTML=xmlhttp.responseText;
            $('#sidebar .menu li').each(function(){
                $(this).removeClass('active');
            });
            $('#sidebar .menu .submenu').each(function(){
                $(this).hide();
            });
            $('#sidebar .menu li.'+name).addClass('active');
            $('#sidebar .menu li.'+name+'_menu').show();
            $('#sidebar .menu li.'+name+' #loader').hide();
            location.hash = "!sk="+name;
        }
    }
}

var all = location.hash.substr(2).split(/&|=/);
var vars = {};

for(var i=0; i<all.length; i+=2){
    vars[all[i]] = all[i+1];
}

var sitename = vars["sk"];
nav(sitename+'.php', sitename);

Gruss
tsbmusic
 
Zurück