Ao enviar um formulário para um URL de vários domínios dentro de um iframe, como determinar se o envio foi bem-sucedido?
Isso, basicamente, é difícil, pois devido às limitações do sandbox de segurança do navegador, não temos como obter informações sobre páginas em domínios diferentes dentro do iframe. Pensando de forma diferente, se você puder obter inicialmente as informações da página interna do iframe, então, quando não conseguir, isso não significa que o formulário foi enviado ~
O livro de visitas do centro de negócios fornecido pelo Baidu para usuários de licitações usa esse método.
Exemplo:
test.html:
código do programa
<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>
<roteiro>
document.testform.onsubmit=função(){
document.testform.submitbtn.disabled = verdadeiro;
enviarMonitor()
;
função enviarMonitor() {
tentar{
var hash = document.getElementById('testiframe').contentWindow.location.hash;
setTimeout(submitMonitor,100);
} pegar (e) {
document.getElementById('testiframe').src = "about:blank";
document.testform.submitbtn.disabled = falso;
}
}
</script>
</html>
código do programa
testaction.asp
<%
Função Sleep(n) 'Unidade de segundos s
Escurecer horário de início
StartTime = Temporizador
Faça: Loop até Timer>n+StartTime
End Function
Sleep(5) 'Atraso de 5 segundos
Response.Write Request.Form("dddd")
%>
Desvantagens:
Esta desvantagem ainda é óbvia. Se for um erro como 404, 403, 500, etc., será confundido com um envio bem-sucedido.
código do programa
setTimeout(submitMonitor,100);
Adicione uma verificação do formulário do cliente antes da função para tentar evitar esse problema.
É claro que o julgamento do status de envio de formulários entre domínios também pode ser implementado gerando um script de alerta no lado do servidor.