Heim > Artikel > Web-Frontend > Umgang mit Abfangen beim Öffnen eines neuen Fensters in der Ajax-Anfrageantwort
Dieses Mal werde ich Ihnen vorstellen, wie Sie mit dem Abfangen beim Öffnen eines neuen Fensters in der Ajax-Anfrageantwort umgehen. Was sind die Vorsichtsmaßnahmen beim Umgang mit dem Abfangen beim Öffnen eines neuen Fensters im Ajax? Bitte um Antwort. Das Folgende ist ein praktischer Fall.
1. Problembeschreibung
Nachdem die asynchrone asynchrone Anfrage erfolgreich war, müssen Sie ein neues Fenster öffnen, um die URL zu öffnen und zu verwenden window.open() Methode, aber sie wird vom Browser abgefangen und erfordert einen Klick des Benutzers.
2. Problemanalyse
Der Grund, warum der Browser neu geöffnete Fenster abfängt, liegt darin, dass der Vorgang nicht aktiv vom Benutzer ausgelöst wird Er geht davon aus, dass dies abgefangen wird, weil es unsicher ist. Auch wenn die Ajax--Rückruffunktion Benutzerverhalten wie Klicken oder Senden (Trigger('Klick')) simuliert, geht der Browser davon aus, dass es nicht aktiv ausgelöst wird Der Benutzer kann daher nicht sicher ausgeführt werden und wird daher abgefangen.
Anleitung:
1. Wenn es in javascript:void(0)" onclick< ist 🎜 >="fun()"> Der Aufruf von window.open() in der hier angegebenen Fun-Methode wird nicht abgefangen, da der Browser davon ausgeht, dass sie aktiv ist. Das Öffnen des Fensters in der Antwort auf die Ajax-Anfrage wird jedoch abgefangen.
2. Wenn Sie die ursprüngliche Webseitenadresse ändern, anstatt ein neues Fenster zu öffnen, können Sie dies mit window.location = newurl erreichen, damit sie nicht abgefangen wird.3. Lösung
Verwenden Sie vor der Ajax-Anfrage window.open, um ein leeres Fenster zu öffnen, und geben Sie dann die Ajax-Antwortfunktion ein das Standortattribut des Fensters zur neuen URL. Codebeispiele wie:function fun(){ var tmpWin =window.open() ajax(xxx, handle(){ //回调函数。这是伪代码,语法不准。 var newurl = xxxx tmpWin.location = newurl; }) }Bei der oben genannten Methode liegt ein Problem vor, da zuerst ein leeres Fenster geöffnet wird. Wenn die Ajax-Anfrage fehlschlägt (Netzwerk- oder Geschäftslogikproblem), wird die Es erscheint ein neues Fenster. Es werden keine normalen Ergebnisse angezeigt, was zu Verwirrung beim Benutzer führen kann.
Eine Lösung besteht darin, eine Eingabeaufforderung zu erwägen, wenn ein Problem mit Ajax vorliegt, z. B. tmpWin.
document.write("Server processing Ausnahme");
function fun(){ var result; ajax({ //需要设置同步请求 ..... result = xxx ....... }) if(result){ window.open(xxxx) } }Der obige Ansatz vermeidet die oben genannten Probleme, da nach der Beurteilung des Ergebnisses der Ajax-Anfrage ein neues Fenster geöffnet wird.
Da es sich jedoch um eine synchrone Anfrage handelt, haben wir in unserem Test ein Problem festgestellt: Wenn die Antwortzeit des Servers zu lang ist, wird erstens die Schnittstelle angehalten (die Benutzererfahrung ist nicht gut) und zweitens das neue Fenster wird gesperrt.
4. Zusammenfassung
Zusammenfassend ist ersichtlich, dass es nach der Rückkehr von Ajax keine besonders perfekte Möglichkeit gibt, ein neues Fenster zu öffnen. Konkret müssen Sie geeignete Maßnahmen ergreifen, die auf den Geschäftsmerkmalen Ihres eigenen Systems basieren. Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website! Empfohlene Lektüre:Wie man mit verstümmeltem Ajax-Übermittlungscode unter IE umgeht
Detaillierte Erläuterung der Schritte für Ajax um Datentypen an den Server zu senden
Das obige ist der detaillierte Inhalt vonUmgang mit Abfangen beim Öffnen eines neuen Fensters in der Ajax-Anfrageantwort. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!