je suis arrivé la page où les éléments HTML <form>
et sont dinamicaly créés avec Javascript:Javascript submit() événement ne se déclenche pas sur la sortie (événement décharger)
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>');
Ensuite, certaines données sont placées dans l'élément <textarea>
et submited :
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();
};
le problème est que cliquer sur la page data
est combiné et envoyé comme il supose à faire sur les deux navigateurs Gecko et IE de la même manière. Mais lorsque l'utilisateur quitte la page et que le data
est défini, form.submit()
n'est pas lancé sur le navigateur Gecko bien que IE le fasse comme je le voulais.
Par exemple, sur la même page existe le lien <a href="http://www.google.com">Google</a>
que l'utilisateur soumet après avoir cliqué n'importe où sur la page. Une fois que l'utilisateur a fait cela, data
est défini et doit être envoyé à myURL.php
, mais ce n'est pas le cas.
MISE À JOUR: Il s'agit de l'intégralité du code http://pastebin.com/DF3DVLpG. En mentionnant les navigateurs basés sur Gecko, j'avais en tête d'autres navigateurs populaires tels que Firefox, Opera, Chrome et Safari. Désolé de tromper.
Quel pourrait être le problème: code Javascript, comportement du navigateur ou autre chose?
J'ai ajouté un lien vers le code source à côté de l'étiquette "UPDATE". – ritmas
Cet article MS concerne le problème IE6, mais mon code fonctionne sur IE, bien que je n'ai pas vérifié spécifiquement sur IE6 SP1. Néanmoins, il est plus important de savoir pourquoi cela ne fonctionne pas sur d'autres navigateurs tels que Firefox, Opera, Chrome et Safari. – ritmas