Отправить не работает в Chrome и IE под Windows 7 - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть веб-форма, созданная с использованием .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.

1 Ответ

0 голосов
/ 15 февраля 2011

Звучит как ограничение безопасности здесь. Попробуйте создать эту форму прямо из ASP.NET вместо Javascript. Это поможет Chrome увидеть его, так как он будет в необработанном HTML, а не в виртуальном. Конечно, все элементы формы могут быть скрыты, поэтому это не повлияет на представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...