Wie kann beim Senden eines Formulars an eine domänenübergreifende URL innerhalb eines Iframes festgestellt werden, ob die Übermittlung erfolgreich ist?
Dies ist grundsätzlich schwierig, da wir aufgrund der Einschränkungen der Browser-Sicherheitssandbox keine Möglichkeit haben, Informationen über Seiten in verschiedenen Domänen innerhalb des Iframes zu erhalten. Anders ausgedrückt: Wenn Sie zunächst die Informationen zur internen Iframe-Seite erhalten können, bedeutet dies nicht, dass das Formular gesendet wurde, wenn Sie sie nicht erhalten können ~
Das von Baidu für bietende Benutzer bereitgestellte Business-Center-Gästebuch verwendet diese Methode.
Beispiel:
test.html:
Programmcode
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
<body style="background:#a7a7a7;">
<iframe id="testiframe" name="testiframe"></iframe>
<form method="post" action=" http://www.test.com/testaction.asp " target="testiframe" name="testform">
<input type="text" name="dddd"><input type="submit" value="ddd" name="submitbtn"/>
</form>
</body>
<Skript>
document.testform.onsubmit = function () {
document.testform.submitbtn.disabled = true;
sentMonitor();
}
Funktion commitMonitor () {
versuchen{
var hash = document.getElementById('testiframe').contentWindow.location.hash;
setTimeout(submitMonitor,100);
} fangen (e) {
document.getElementById('testiframe').src = "about:blank";
document.testform.submitbtn.disabled = false;
}
}
</script>
</html>
testaction.asp-
Programmcode
<%
Funktion Sleep(n) 'Einheit Sekunden s
Startzeit dimmen
StartTime = Timer
Führen Sie Folgendes aus: Schleife bis Timer>n+StartTime
End Function
Sleep(5) 'Verzögerung 5 Sekunden
Response.Write Request.Form("dddd")
%>
Nachteile:
Dieser Nachteil ist immer noch offensichtlich. Wenn es sich um einen Fehler wie 404, 403, 500 usw. handelt, wird er mit einer erfolgreichen Übermittlung verwechselt
Programmcode
setTimeout(submitMonitor,100);
Fügen Sie vor der Funktion eine Client-Formularprüfung hinzu, um dieses Problem zu vermeiden.
Natürlich kann die Beurteilung des Status der domänenübergreifenden Formularübermittlung auch durch Ausgabe eines Warnskripts auf der Serverseite implementiert werden.