У меня есть страница, где элементы 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, поведение браузера или что-то еще?