Al enviar un formulario a una URL de dominio cruzado dentro de un iframe, ¿cómo determinar si el envío se realizó correctamente?
Esto, básicamente, es difícil, porque debido a las limitaciones del entorno limitado de seguridad del navegador, no tenemos forma de obtener información sobre páginas en diferentes dominios dentro del iframe. Pensando de otra manera, si inicialmente puede obtener la información de la página interna del iframe, cuando no pueda obtenerla, ¿no significa que el formulario se ha enviado?
El libro de visitas del centro de negocios proporcionado por Baidu a los usuarios que pujan utiliza este método.
Ejemplo:
test.html:
código del programa
<html>
<head><meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312"></head>
<estilo del cuerpo="fondo:#a7a7a7;">
<iframe id="testiframe" nombre="testiframe"></iframe>
<form método="post" action=" http://www.test.com/testaction.asp " target="testiframe" nombre="testform">
<tipo de entrada="texto" nombre="dddd"><tipo de entrada="enviar" valor="ddd" nombre="submitbtn"/>
</formulario>
</cuerpo>
<guión>
documento.testform.onsubmit = función () {
document.testform.submitbtn.disabled = verdadero;
enviarMonitor();
}
función enviarMonitor () {
intentar{
var hash = document.getElementById('testiframe').contentWindow.location.hash;
setTimeout(enviarMonitor,100);
} atrapar (e) {
document.getElementById('testiframe').src = "about:blank";
document.testform.submitbtn.disabled = falso;
}
}
</script>
</html>
código del programa
testaction.asp
<%
Función Sleep(n) 'Unidad segundos s
Hora de inicio tenue
Hora de inicio = Temporizador
Hacer: bucle hasta el temporizador> n + hora de inicio
Fin de función
Sleep(5) 'Retraso de 5 segundos
Response.Write Request.Form("dddd")
%>
Desventajas:
Esta desventaja sigue siendo obvia. Si se trata de un error como 404, 403, 500, etc., se confundirá con un envío exitoso.
código de programa
setTimeout(enviarMonitor,100);
Agregue una verificación de formulario de cliente antes de la función para intentar evitar este problema.
Por supuesto, el juicio del estado de envío de formularios entre dominios también se puede implementar generando un script de alerta en el lado del servidor.