Lors de la soumission d'un formulaire à une URL inter-domaines dans une iframe, comment déterminer si la soumission a réussi ?
Ceci est fondamentalement difficile, car en raison des limitations du bac à sable de sécurité du navigateur, nous n'avons aucun moyen d'obtenir des informations sur les pages des différents domaines de l'iframe. En pensant différemment, si vous pouvez initialement obtenir les informations de la page interne iframe, alors lorsque vous ne pouvez pas les obtenir, cela ne signifie-t-il pas que le formulaire a été soumis ~
Le livre d'or du centre d'affaires fourni par Baidu pour les utilisateurs soumissionnaires utilise cette méthode.
Exemple :
test.html :
code du programme
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
<body style="fond:#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>
</corps>
<script>
document.testform.onsubmit = fonction () {
document.testform.submitbtn.disabled = true ;
soumettreMoniteur();
}
fonction submitMonitor () {
essayer{
var hash = document.getElementById('testiframe').contentWindow.location.hash;
setTimeout(submitMonitor,100);
} attraper (e) {
document.getElementById('testiframe').src = "about:blank";
document.testform.submitbtn.disabled = false ;
}
}
</script>
</html>
Code du programme
testaction.asp
<%
Fonction Sleep(n) 'Unité secondes s
Dim StartTime
StartTime = Minuterie
Faire : boucle jusqu'à ce que la minuterie > n + StartTime
Fin de la fonction
Sleep(5) 'Délai de 5 secondes
Response.Write Request.Form("dddd")
%>
Inconvénients :
Cet inconvénient est toujours évident. S'il s'agit d'une erreur telle que 404, 403, 500, etc., elle sera confondue avec une soumission réussie. Cependant, cela peut l'être.
code de programme
setTimeout(submitMonitor,100);
Ajoutez une vérification du formulaire client avant la fonction pour essayer d'éviter ce problème.
Bien entendu, un jugement sur l’état de soumission d’un formulaire inter-domaines peut également être mis en œuvre en générant un script d’alerte côté serveur.