2010-11-25 11 views
3

Ich muss die # aus der URL entfernen, wenn mein event.value == to/ist. Ich habe eine Lighbox mit jquery.address, die Verweise auf geöffnete Bilder speichert, wenn ich es schließe, muss ich die # Markierung entfernen, da diese Ursache Fensterrolle oben ist.JQuery.address Wie # aus der URL entfernt werden (Javascript window.location remove #)

Ich habe die # Markierung damit entfernt: window.location.href.slice (0, -1); Aber wie Sie im obigen Code sehen können, verursacht dies das Umschreiben der URL, wenn die Seite geladen wird und nicht erst nach meinem Ereignis.

Wie kann ich dieses Javascript nur verbinden, wenn mein vollständiger geschieht, in der Art, wie diese Funktion olny genannt wird, wenn ich den Leuchtkasten schließe.

Ich füge hier meinen Code mit Kommentaren an. danke allen

$.address.change(function(event) { 
    curLink = event.value; 
    if(curLink != '/') { 

    // here my stuff, jquery.address generates url with reference 

    // ex: mysite.com/cat/subcat/page.html#one 

    } else { 

     $('#element').animate({opacity:"0"},{duration:100, easing:"quartEaseOut", complete: function() { 

     // here I need to remove the hash only after the complete 

     // ex: mysite.com/cat/subcat/page.html# > mysite.com/cat/subcat/page.html 

     window.location.href.slice(0, -1);   
     $(this).hide(); 
    }}); 
    } 
}); 

Antwort

2

window.location.hash = '' Verwendung sollte es völlig entfernen, sonst gibt es einige gute Plugins, die eine Vielzahl von Funktionen für die Arbeit mit URLs (z http://ajaxcssblog.com/jquery/url-read-request-variables) öffnen.

+1

dies ändert war die einfachste Lösung aller Zeiten. Danke. – Luke

0

window.location.hash = '' funktionieren nicht in meinem Fall.

window.location.href.slice(0, -1); funktioniert! Das Problem, das ich nicht lösen kann, ist, wie ich diese JavaScript-Anweisung erst nach dem vollständigen jQuery-Ereignis verketten kann (inzwischen wird es beim Laden der Seite ausgelöst).

ich jetzt denken, ist dumm Anruf JavaScript nach jQuery

danke

2

versuchen, diese

newHash = window.location.hash.substring(1); 

console.log(newHash); 

, wenn Sie einen Anker haben dann seine in der Regel am Anfang der URL angehängt, so aber Entfernen Sie das erste Zeichen, dann sollten Sie es nicht mehr als Problem haben.

oder wenn Sie können es sogar auf diese Weise tun, was ich denke, ist, was Sie vielleicht

brauchen
newHash = window.location.hash.replace('#', ''); 

console.log(newHash); 
+0

das war ein hilfreicher Kommentar, danke – radleybobins

1

Ich habe festgestellt, dass der Wert nach dem Hash-Wechsel für ein Szenario am besten funktioniert ähnlich wie bei Ihnen. Es müsste ein Hash sein, der auf Ihrer Seite noch nicht existiert.

function removeDeepLink(event) { 
    window.location.hash = 'foo'; 
}; 
1

Man könnte dies auch verwenden (was völlig den Hash entfernt und reinigt die URL direkt wieder nach oben)

history.pushState("", document.title, window.location.pathname); 

Welche

http://www.google.com/#top 

zu

http://www.google.com/ 
Verwandte Themen