提交不在Windows 7下的Chrome和IE中工作

时间:2011-02-14 22:26:34

标签: javascript windows-7 google-chrome internet-explorer-8

我有一个使用.net创建的Web表单,并且在此表单中有一个框架,其源自另一个HTML页面(由courselab软件创建)。每当用户完成页面并单击提交按钮并正常退出或用户根据javascript事件“onbeforeunload”导航离开页面时,我会调用javascript代码。

代码完全正常使用

两种情况下的Firefox * *

在Windows XP上的 IE *

如果用户点击了提交按钮(这是由调用javascript代码的courselab软件生成的提交按钮),它仍适用于 CHROME

但是如果用户导航离开Web表单,则使用“onbeforeunload”调用此代码并且代码呈现正确,但提交输入永远不会被触发。

类似,此代码不会在Windows 7上使用IE启动。

我还调用了表单的代​​码“onunload”,但仍然没有任何反应。

更新 IE 8 Firefox 3.6.1.3 Chrome 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中很好。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,如下所述:http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/00b88378-a7f1-4148-9587-1ff17d6fa728

基本上似乎在Windows 7和IE9中,子表单被拒绝访问提交调用。

诀窍是让父母去做电话。将onbeforeunload事件放在父表单上,然后找到框架,然后从表单中调用提交。

答案 1 :(得分:0)

检查或停用您的扩展程序,并查看它是哪一个。我之前发生过AdBlock。