【问题标题】:Submit not working in Chrome and IE under Windows 7提交在 Windows 7 下无法在 Chrome 和 IE 中运行
【发布时间】: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


【解决方案1】:

我有一个类似的问题,描述如下:http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/00b88378-a7f1-4148-9587-1ff17d6fa728

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

诀窍是让父母来做电话。将 onbeforeunload 事件放在父表单上,它会找到框架并从那里找到表单,并允许调用提交。

【讨论】:

    【解决方案2】:

    检查或禁用您的扩展程序,看看它是哪一个。我以前用 AdBlock 也遇到过这种情况。

    【讨论】:

    • 我已经更新了我的问题并添加了解释问题所需的代码,我可以期待一些帮助吗?谢谢。
    • 您能否安装 Chrome 的 FireBug 扩展程序,并在运行时检查页面上的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2021-09-19
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    相关资源
    最近更新 更多