반응형
javascript를 사용하여 리디렉션하지 않고 URL 변경
탭을 클릭하면 URL이 변경되지만 페이지 선량 새로고침이 완료되었을 때 이 웹사이트 http://dekho.com.pk/ads-in-lahore에서처럼 리다이렉트하지 않고 URL을 변경하는 방법을 알고 싶습니다.stackoverflow에 대해 다른 질문도 있지만, 위의 웹사이트가 어떻게 그것을 구현했는지 알고 싶습니다.감사해요.
사용하다pushState
:
window.history.pushState(data, title, url);
LE: 최신 브라우저가 동작을 변경했기 때문에replaceState
대신:
window.history.replaceState(data, title, url);
사용하는 용도를 정확하게 알고 싶다면 Backbone.js를 참조해 주세요.4574
그리고.4981
jQuery 소스와 함께 모두 혼재되어 있습니다만, 주석 첨부 소스 문서 페이지의 관련 행은 다음과 같습니다.
지원 체크는 다음과 같습니다.
this._wantsPushState = !!this.options.pushState;
this._hasPushState = !!(this.options.pushState && window.history && window.history.pushState);
그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;
},
// 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);
}
고객이 무엇을 하고 있는지에 대한 자세한 내용은 다음과 같습니다.
// 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);
}
맨 위에 제공된 Backbone.js 링크를 읽어보십시오.매우 유익합니다.
언급URL : https://stackoverflow.com/questions/12446317/change-url-without-redirecting-using-javascript
반응형
'programing' 카테고리의 다른 글
Create React App에서 API 키를 숨기려면 어떻게 해야 하나요? (0) | 2023.02.22 |
---|---|
angular에서 module.config(configFn)에 의존관계를 주입하는 방법 (0) | 2023.02.22 |
angularjs에서 간단한 드래그 앤 드롭을 작성하는 방법 (0) | 2023.02.22 |
woocommerce - 카트 항목 수량을 프로그래밍 방식으로 업데이트합니다. (0) | 2023.02.22 |
클래스 상수를 구현하는 방법 (0) | 2023.02.22 |