Событие submit () Javascript не запускается при выходе (событие unload) - PullRequest
0 голосов
/ 28 октября 2010

У меня есть страница, где элементы HTML <form> и <iframe> динамически создаются с помощью Javascript:

document.write('<iframe id="myIframe" name="myIframe" src="about:blank" style="display:none;"></iframe>');
document.write('<form id="myForm" name="myForm" method="post" target="myIframe" action="myURL.php" style="display:none;">');
document.write('<textarea name="d"></textarea>');
document.write('</form>');

Затем некоторые данные помещаются в элемент <textarea> и передаются:

var data = '';

function myOnClick()
{
    // combine data
    data += 'click|';

    if (data.length > 17)
    {
        // initiate after 3rd click
        mySubmit();
    }
};
function myOnUnload()
{
    if (data.length > 0)
    {
        mySubmit();
    }
};
function mySubmit()
{
    var form     = document.getElementById('myForm');
    var textarea = form.getElementsByTagName('textarea')[0];

    // set data
    textarea.innerHTML = data;
    // send data
    form.submit();

    // set var to default value
    data = '';
};

if (document.addEventListener)
{
    // Gecko browsers
    document.addEventListener('mousedown', myOnClick, false);
}
else if (document.attachEvent)
{
    // IE browsers
    document.attachEvent('onmousedown', myOnClick, false);
}

window.onunload = function()
{
    myOnUnload();
};

Проблема в том, что нажатие на страницу data объединяется и отправляется так, как это требуется для браузеров Gecko и IE одинаково. Но когда пользователь покидает страницу и установлен data, form.submit() не запускается в браузере Gecko, хотя IE делает это так, как я хотел.

Например, на той же странице существует ссылка <a href="http://www.google.com">Google</a>, которую пользователь отправляет после того, как щелкнул где-либо на странице. После того, как пользователь сделал это, data установлен и должен быть введен в myURL.php, но это не так.

ОБНОВЛЕНИЕ: Это весь код http://pastebin.com/DF3DVLpG. Говоря о браузерах на основе Gecko, я имел в виду другие популярные браузеры, такие как Firefox, Opera, Chrome и Safari. Извините за ввод в заблуждение.

В чем может быть проблема: код Javascript, поведение браузера или что-то еще?

Ответы [ 2 ]

0 голосов
/ 29 октября 2010

Я получил его с помощью другого события - onbeforunload .

0 голосов
/ 28 октября 2010

Эта статья MS может помочь с вашей проблемой.

http://support.microsoft.com/kb/331869

Не уверен, что это именно ваша проблема, не видя больше вашего кода.Если это весь ваш код, вполне вероятно, что это проблема.

...