Als AJAX populär war, wurden viele Informationen asynchron von AJAX angefordert, wie z. B. Klicks, Umblättern usw. Normalerweise wird in diesem Fall die aktuelle Seite beim Aktualisieren des Browsers auf den Ausgangszustand zurückgesetzt. Ganz zu schweigen davon, dass Sie die Informations-URL, die Sie gesehen haben, an Ihre Freunde senden. Lassen Sie mich die Implementierungsideen mit Ihnen teilen. Werfen wir einen Blick auf die detaillierte Erklärung der AJAX-Seitenstatuspflegeidee.
Der herkömmliche Status wird in der Adressleiste gespeichert, z. B.: www.abc.com/search?s=abc&id=23&page=3Wenn diese Methode verwendet wird, wird der Browser aktualisiert Wenn Sie Anker verwenden, wird der Browser nicht aktualisiert. Insbesondere wenn Sie auf die Seite klicken, um Daten anzufordern, wird der Wert nach „#“ in der Adressleiste geändert. Wir gehen zur vierten Seite wie:abc.com/search#s=abc&id=23&page=4
Dies reicht nicht aus, wenn der Benutzer auf „klickt“. Vorwärts“ und „Zurück“ ändert sich der Seiteninhalt nicht entsprechend. Ich habe einenTimer verwendet, um das Problem basierend auf dem, was andere online gemacht haben, zu lösen.
/** * URL Watcher(require jQuery) * 监测url的变化 * useage: * UrlWatcher.init(50); * UrlWatcher.AddListener(function(url,isFirstLoad){ * FrontEngine.generateFront(); * }); * */ var UrlWatcher = { "init": function (waittime) { this.UrlArray = [window.location.href];//set current url as default this.ListenerArray = []; this.ResetWaitTime(waittime); }, "AddListener": function (listener) {//add a process function this.ListenerArray.push(listener || function () {}); }, "DeleteListener": function () { this.ListenerArray = []; }, "ResetWaitTime": function (time) {//start timer if (this.IntervalHandle) {window.clearInterval(this.IntervalHandle); } this.WaitTime = time || 1000; this.IntervalHandle = window.setInterval(this.ListenerCall.setThis(this), this.WaitTime); }, "ListenerCall": function () { var self = this, url = window.location.href; if (self.UrlArray[self.UrlArray.length - 1] === url) {return; } window.clearInterval(this.IntervalHandle); $.each(this.ListenerArray, function (c, listener) { listener(url, self.UrlArray.length === 0); }); this.UrlArray.push(url); this.ResetWaitTime(this.WaitTime); } };
document.documentMode des IE erkannt werden.
if( ('onhashchange' in window) && ((typeof document.documentMode==='undefined') || document.documentMode==8)) { // 浏览器支持onhashchange事件 indow.onhashchange = hashChangeFire; // TODO,对应新的hash执行的操作函数 } else { // 不支持则用定时器检测的办法 setInterval(function() { var ischanged = isHashChanged(); // TODO,检测hash值或其中某一段是否更改的函数 if(ischanged) { hashChangeFire(); // TODO,对应新的hash执行的操作函数 } }, 150); }
Detaillierte Erläuterung der Vorsichtsmaßnahmen für Webservice-Aufrufe mit jQuery-Ajax anhand von Beispielen
Detaillierte Erläuterung von Front-End-Ajax und Back- Interaktion beenden
Die Stärke von Ajax beim dynamischen Laden von Daten teilen
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Idee, den AJAX-Seitenstatus beizubehalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!