У меня есть веб-форма, созданная с использованием .net, и в этой форме есть фрейм, источником которого является другая HTML-страница (созданная программным обеспечением Courselab). Я вызываю код javascript всякий раз, когда пользователь завершает страницу, нажимаю кнопку отправки и завершаю работу в обычном режиме или всякий раз, когда пользователь уходит со страницы на основании события javascript «onbeforeunload».
Код работает просто отлично, используя
Firefox в обоих случаях
* IE в Windows XP в обоих случаях *
Тем не менее он работает в CHROME , если пользователь нажал кнопку отправки (эта кнопка отправки генерируется программным обеспечением courselab, которое вызывает код JavaScript),
но если пользователь отходит от веб-формы, этот код вызывается с использованием "onbeforeunload", и код отображается правильно, но ввод данных никогда не запускается.
Аналогично, этот код не запускается с использованием IE в Windows 7.
Я также назвал код «onunload» формы, но все равно ничего не происходит.
Update
IE 8
Firefox 3.6.1.3
Хром 9.0.597.98
основная веб-форма имеет следующий
<div id="FOContent">
<iframe runat=server id="mainiframe" name="mainiframe" scrolling="no" frameborder="no"
width="1000" height="920"></iframe>
</div>
Содержимое фрейма происходит с этой HTML-страницы
<body style="margin-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;" onload="Run(true)" onunload="Shutdown()" onbeforeunload="Shutdown()" oncontextmenu="return false">
<div id="boardFrame" style="position:absolute;left:0px;top:0px;width:1000;height:700">
</div>
<div id="divEmail"></div>
</body>
И код javascript, который вызывается для «onunload» или «onbeforeunload», равен
function LMSShutdown() {
if (submit_Var == false) {
var sAiccData = AICC_PrepareData(); // prepare data from the CourseLab
var strQuizResults
strQuizResults = "";
var nPos1 = sAiccData.indexOf("Score=");
nPos1 = nPos1 + 6;
var ePos1 = nPos1 + 2
var score = sAiccData.substring(nPos1, ePos1);
var sHTML = "";
var qTxt;
qTxt = ""
var qrStr = window.location.search;
var spQrStr = qrStr.substring(1);
var arrQrStr = new Array();
// splits each of pair
var arr = spQrStr.split("&");
for (var i = 0; i < arr.length; i++) {
// splits each of field-value pair
var index = arr[i].indexOf("=");
var key = arr[i].substring(0, index);
var val = arr[i].substring(index + 1);
var id1
var id2
if (key == "")
{key = "Q"+i}
qTxt = qTxt + "&" + key + "=" + val;
if (i == 0)
{ id1 = val; }
else
{ id2 = val; }
}
// saves each of field-value pair in an array variable
sHTML += '<FORM id="formQuiz" method="POST" action="../../../StudentView/QuizProcess.aspx?submit_Var=' + 'false' + '&score=' + score + qTxt + '">';
var spQrStr = g_arVars["writing"];
var arrQrStr = new Array();
// splits each of pair
var arr = spQrStr.split("@@@");
for (var i = 0; i < arr.length; i++) {
// splits each of field-value pair
var index = arr[i].lastIndexOf(":");
var key = arr[i].substring(0, index);
var val = arr[i].substring(index + 1);
if (key != "")
{qTxt = qTxt + "&" + key + "=" + val;
sHTML += '<INPUT TYPE="hidden" NAME="' + key + '" VALUE=\'' + val + '\'>';
}
}
sHTML += '<br><input name="btnSubmit" id="btnSubmit" type="button"><br>';
sHTML += '</FORM>';
document.getElementById("divEmail").innerHTML = sHTML;
document.getElementById("formQuiz").submit();
submit_Var = true;
}
}
Страница QuizProcess.aspx содержит немного HTML, но содержит код vb .net для хранения данных в базе данных
Проблема в том, что функция LMSShutdown вызывается во всех браузерах на разных платформах, но форма QuizProcess отправляется не только в (chrome в Windows XP или 7) и в (IE 8 при использовании Windows 7). ) странно работает нормально в IE 8 на Windows XP.