Heim  >  Artikel  >  Web-Frontend  >  Umgang mit Abfangen beim Öffnen eines neuen Fensters in der Ajax-Anfrageantwort

Umgang mit Abfangen beim Öffnen eines neuen Fensters in der Ajax-Anfrageantwort

php中世界最好的语言
php中世界最好的语言Original
2018-04-03 17:30:561776Durchsuche

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");

Auch um das zu verhindern Die Ajax-Antwortzeit ist zu lang. Wenn das Fenster erstellt wird, wird sofort eine Eingabeaufforderung angezeigt. tmpWin.document.write("Der Server verarbeitet, bitte warten");

Wenn Ajax später normal zurückkehrt, liegt das daran Wenn der Speicherort auf einen Wert festgelegt ist, werden die ursprünglich gedruckten Informationen durch die neuen Seiteninformationen überschrieben.

Es gibt eine andere Methode, die jedoch auch Mängel aufweist:

Da Ajax als synchrone Anfrage festgelegt werden kann, können Sie window.open verwenden, um nach der Ajax-Anfrage ein neues Fenster zu öffnen. Zum Beispiel:

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.

Nur ​​kein Problem, wenn der Server schnell zurückkommt. Während unseres Tests schliefen wir während der Verarbeitung des Servercodes eine Sekunde lang und stellten fest, dass das neue Fenster blockiert war.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn