JavaScript с проблемой ie6 - PullRequest
       0

JavaScript с проблемой ie6

0 голосов
/ 21 июня 2011

У меня есть кнопка ввода с событием onclick:

<input id="bSave" type="button" name="bSave" value=Save 
          onclick="save();window.close();">

здесь есть функция сохранения

function save(){
              //do some calculation
    calculate();
    //submit a form in this popup window
    document.RCSARiskAssessDimenResultForm.submit();
              //call parent opener to submit another form in parent window
    window.opener.document.RiskControlAssessmentDetailForm.bSave.onclick();
}

На моем ПК с win7 / ie8 запрос на отправку отправляется и завершается, проблем нет. Но клиентская среда с xp / ie6, иногда (не всегда) первой отправкой просто не отправлялась. Похоже, что window.close () вызывается или по другой неизвестной причине (сетевая задержка?).

Любые предложения (информация) будут благодарны.

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Вы должны поставить свой window.close(), когда вы уверены, что ваши представления сделаны.Обычно в форме обратных вызовов.Таким образом, вы контролируете, что происходит.

Javascript имеет один поток, и он может выглядеть последовательно, но это не так.Если ваши подчиненные имеют вызов к серверу или используют setTimeout или setInterval, вы начинаете выполнять некоторые асинхронные действия и вызывается следующий оператор JS.

Может, поскольку IE6 имеет более хрупкую реализацию, котораятребуется больше времени, чтобы что-то сделать и выявить проблему, которая может возникнуть и в других браузерах с медленным подключением.

0 голосов
/ 21 июня 2011

Для этого вам придется использовать функцию обратного вызова.

См. Следующий пример.

function celebrate(){
    //your celebrate code here
}


function run(){
    //your run code here
}

function compete(){
    run();
    celebrate();
}

В приведенном выше случае вы иногда увидите, что празднество вызывается до или после функции запуска из-за характера среды выполнения javascript.

Празднование во время бега - неудача.

function run(callbackFunction){
    //your run code here

    //execute the callback
    callbackFunction();
}

function celebrate(){
    //your celebrate code here
}

function compete(){
    run(function(){celebrate();});
}

Это гарантирует, что вы не будете праздновать во время бега.

Приветствие.

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