عند إرسال نموذج إلى عنوان URL عبر النطاقات ضمن إطار iframe، كيف يمكن تحديد ما إذا كان الإرسال ناجحًا؟
يعد هذا أمرًا صعبًا في الأساس، لأنه نظرًا للقيود المفروضة على وضع حماية أمان المتصفح، ليس لدينا طريقة للحصول على معلومات حول الصفحات في المجالات المختلفة داخل إطار iframe. بالتفكير بشكل مختلف، إذا كان بإمكانك في البداية الحصول على معلومات صفحة iframe الداخلية، فعندما لا تتمكن من الحصول عليها، فهذا لا يعني أنه تم إرسال النموذج ~
يستخدم سجل زوار مركز الأعمال الذي توفره Baidu لمستخدمي المزايدة هذه الطريقة.
مثال:
test.html:
رمز البرنامج
<أتش تي أم أل>
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
<body style="background:#a7a7a7;">
<iframe id="testiframe" name="testiframe"></iframe>
<طريقة النموذج = "post" action = " http://www.test.com/testaction.asp " target = "testiframe" name = "testform">
<نوع الإدخال = "نص" اسم = "dddd"><نوع الإدخال = "إرسال" القيمة = "ddd" اسم = "submitbtn"/>
</النموذج>
</الجسم>
<النص البرمجي>
document.testform.onsubmit = الوظيفة () {
document.testform.submitbtn.disabled = true;
إرسال الشاشة ()
}
وظيفة إرسال الشاشة () {
يحاول{
var hash = document.getElementById('testiframe').contentWindow.location.hash;
setTimeout(submitMonitor,100);
} قبض (ه) {
document.getElementById('testiframe').src = "about:blank";
document.testform.submitbtn.disabled = false;
}
}
</script>
</html>
رمز البرنامج
testaction.asp
<%
وظيفة النوم (ن) 'وحدة ثانية ثانية
وقت البدء الخافت
StartTime = Timer
افعل: حلقة حتى المؤقت>n+StartTime
نهاية وظيفة
النوم(5) 'تأخير 5 ثواني
الاستجابة.كتابة الطلب.نموذج("dddd")
%>
العيوب:
لا يزال هذا العيب واضحًا إذا كان خطأ مثل 404، 403، 500، وما إلى ذلك، فسيتم الخلط بينه وبين الإرسال الناجح، ومع ذلك، يمكن أن يكون كذلك
رمز البرنامج
setTimeout(submitMonitor,100);
أضف فحص نموذج العميل قبل الوظيفة لمحاولة تجنب هذه المشكلة.
بالطبع، يمكن أيضًا تنفيذ الحكم على حالة إرسال النموذج عبر المجال عن طريق إخراج برنامج نصي للتنبيه على جانب الخادم.