2010-10-28 31 views
0

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?

Répondre

0

Cet Article MS pourrait aider avec votre problème.

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

Je ne sais pas si cela est votre problème exact sans voir plus de votre code. Si c'est tout votre code, c'est très probablement le problème.

+0

J'ai ajouté un lien vers le code source à côté de l'étiquette "UPDATE". – ritmas

+0

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