【发布时间】:2011-02-14 22:26:34
【问题描述】:
我有一个使用 .net 创建的 Web 表单,并且在这个表单中有一个框架,其源代码来自另一个 HTML 页面(由 courselab 软件创建)。每当用户完成页面并单击提交按钮并正常退出时,或者每当用户根据 javascript 事件“onbeforeunload”离开页面时,我都会调用 javascript 代码。
代码完美地使用
两种情况下的 Firefox *两种情况下都在 Windows XP 上运行 IE*
如果用户点击提交按钮(这个提交按钮由 courselab 软件调用 javascript 代码生成),它仍然可以在 CHROME 中工作,
但如果用户离开 Web 表单,则会使用“onbeforeunload”调用此代码,并且代码会正确呈现,但不会触发提交输入。
类似地,此代码在 Windows 7 上使用 IE 时不会触发。
我还调用了表单的代码“onunload”,但仍然没有任何反应。
更新 即 8 火狐 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>
“onunload”或“onbeforeunload”调用的javascript代码是
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 并没有仅在(Windows XP 或 7 上的 chrome )和(使用 Windows 7 时的 IE 8)中提交奇怪的工作在 Windows XP 上的 IE 8 中很好。
【问题讨论】:
-
您好 user616912,欢迎来到 StackOverflow!我知道这里有人很乐意帮助您回答您的问题,但是,为了帮助您,我们需要更多信息。首先,你没有指定浏览器版本的各种情况(IE6/7/8?Firefox v???)。此外,如果您可以包含您正在讨论的代码(至少是重要部分),那将有很大帮助。这一切都将帮助我们更好地帮助您。使用您的帖子的编辑按钮来更新它。希望有帮助!
-
请提供一些源代码,以便我们看看您在做什么。当您可能缺少 ; 时,很难提供帮助。我们看不到它。
标签: javascript windows-7 google-chrome internet-explorer-8