Chciałbym wiedzieć, jak zmienić adres URL bez przekierowania, jak na tej stronie internetowej http://dekho.com.pk/ads-in-lahore kiedy klikamy na zakładki zmienia się adres URL, ale strona dosent przeładowuje się całkowicie. Istnieją inne pytania dotyczące stackoverflow, które wskazują, że nie jest to możliwe, ale chciałbym wiedzieć, w jaki sposób wyżej wspomniana strona internetowa zaimplementowała go. DziękiZmień adres URL bez przekierowania za pomocą javascript
Odpowiedz
użytku pushState
:
window.history.pushState("", "", '/newpage');
odsyłam link, aby uzyskać więcej informacji http://diveintohtml5.info/history.html –
https://developer.mozilla.org/en-US/docs/Web/API/History_API –
Jeśli chcesz dokładnie wiedzieć, co oni używają, to backbone.js (patrz linie 4574
i 4981
). To wszystko miesza się tam z źródła jQuery, ale są odpowiednie linie strony annotated Backbone.Router
source dokumentacja:
this._wantsPushState = !!this.options.pushState;
this._hasPushState = !!(this.options.pushState && window.history && window.history.pushState);
Funkcja route
:
route: function(route, name, callback) {
Backbone.history || (Backbone.history = new History);
if (!_.isRegExp(route)) route = this._routeToRegExp(route);
if (!callback) callback = this[name];
Backbone.history.route(route, _.bind(function(fragment) {
var args = this._extractParameters(route, fragment);
callback && callback.apply(this, args);
this.trigger.apply(this, ['route:' + name].concat(args));
Backbone.history.trigger('route', this, name, args);
}, this));
return this;
},
wyboru między hash and push state s:
// Depending on whether we're using pushState or hashes, and whether
// 'onhashchange' is supported, determine how we check the URL state.
if (this._hasPushState) {
Backbone.$(window).bind('popstate', this.checkUrl);
} else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE) {
Backbone.$(window).bind('hashchange', this.checkUrl);
} else if (this._wantsHashChange) {
this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
}
Więcej na co oni do:
// If we've started off with a route from a `pushState`-enabled browser,
// but we're currently in a browser that doesn't support it...
if (this._wantsHashChange && this._wantsPushState && !this._hasPushState && !atRoot) {
this.fragment = this.getFragment(null, true);
this.location.replace(this.root + this.location.search + '#' + this.fragment);
// Return immediately as browser will do redirect to new url
return true;
// Or if we've started out with a hash-based route, but we're currently
// in a browser where it could be `pushState`-based instead...
} else if (this._wantsPushState && this._hasPushState && atRoot && loc.hash) {
this.fragment = this.getHash().replace(routeStripper, '');
this.history.replaceState({}, document.title, this.root + this.fragment);
}
if (!this.options.silent) return this.loadUrl();
// If pushState is available, we use it to set the fragment as a real URL.
if (this._hasPushState) {
this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);
}
Należy zapoznać się z adnotacją backbone.js odwołuje ja się na górze. Bardzo informujące.
Dziękuję za odpowiedź. To było bardzo pouczające . Nie znam jeszcze kręgosłupa, więc idę na pushstate, ponieważ spełnia on wszystkie moje potrzeby. – kb858
Backbone.js jest zbudowany wokół routera, ponieważ jest to "aplikacja pojedynczej strony". Chociaż możesz nie być wystarczająco doświadczonym, aby zobaczyć to w mojej odpowiedzi powyżej, to jest to * dokładnie * to, co robi Backbone.js, a także ma zgrabną degradację (dla tych, którzy nie mają przeglądarek, które go obsługują). Zobacz mój link w komentarzu pod twoim pytaniem; Korzystałbym z biblioteki takiej jak https://github.com/balupton/History.js/, a nie z własnej. Chyba, że wiesz, co robisz. –
Używam History.js, ponieważ jestem newb :) – kb858
- 1. Zmień adres URL przez JavaScript (bez hash-tag)
- 2. Zmień adres URL paska adresu przeglądarki za pomocą jQuery
- 3. Adres URL przekierowania OAuth 2.0
- 4. Dynamicznie zmień adres AddThis za pomocą jQuery
- 5. Zmień adres URL autoryzacji Omniauth
- 6. wykrywanie przekierowania za pomocą javascript - jak?
- 7. Uzyskaj adres URL strony głównej w javascript dla przekierowania
- 8. Zmień adres URL z kontrolera?
- 9. Wiosenny adres URL przekierowania, gdy za proxy Zuul
- 10. Adres URL bez identyfikatora
- 11. Jaki jest poprawny adres URL przekierowania dla chrome.identity.launchWebAuthFlow?
- 12. Zakoduj adres URL za pomocą Play 2
- 13. Jak otworzyć adres URL za pomocą skrótu za pomocą Selenium?
- 14. jquery zmień adres URL formularza Wyślij
- 15. Zmień adres URL usługi w kodzie
- 16. Zmień adres URL już otwartego wyskakującego okienka:
- 17. zmień adres URL sklepu w woo-commerce
- 18. htaccess przepisać bez przekierowania
- 19. Jak uzyskać ścieżkę URL bez parametrów $ _GET za pomocą javascript?
- 20. Ustawianie adresów URL przekierowania do określonego adresu URL bez przepisywania
- 21. laravel 5: Zapobieganie przekierowania, gdy adres URL kończy się „/”
- 22. śledzić stronę przekierowania za pomocą google analytics
- 23. Jak uzyskać aktualny adres URL za pomocą smarty?
- 24. Zautomatyzowane pobieranie plików za pomocą WebBrowser bez adresu URL
- 25. jak uzyskać adres URL przekierowania zamiast zawartości strony w golangu?
- 26. Czy HtmlUnit obsługuje przekierowania JavaScript?
- 27. przepisać URL przy użyciu mod rewrite bez przekierowania
- 28. Ładowanie zewnętrznej strony internetowej do mojej strony bez przekierowania pod inny adres URL
- 29. Zmień adres URL strony z WordPress [Galeria] Shortcode
- 30. cURL get URL z przekierowania
Na wspomnianym łączu wywoływana jest ta sama usługa sieciowa, ale z innymi parametrami. –
['history.pushState()'] (https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history). Jest tam również jQuery, ale ta konkretna technika musi być. stan push z cofnięciem dla starszych przeglądarek. –
Możesz także użyć window.location.hash i zmodyfikować http://url.com/page#hash. –