Ok, voilà j'ai trouvé comment faire pour le premier point.
Je suis mal exprimé par rapport à ma demande en fait...
Voilà je suis en train de faire un script qui bloque la soumission des formulaires suite à une première soumission.
Voici le script :
var
myForm = document.forms[0];var bSubmitting = false;oldOnSubmit = myForm.onsubmit;
oldSubmit = myForm.submit;
function newOnSubmit() {
if(oldOnSubmit) // Dans le cas ou dans la balise form il n'y a pas de OnSubmit {
if (!bSubmitting && oldOnSubmit()) // On fait le onSubmit et on test si le formulaire n'est pas soumis {
bSubmitting =
true; returntrue; }
else {
returnfalse; }
}
else {
if (!bSubmitting) {
returntrue; }
else {
returnfalse; }
}
}
function newSubmit() {
if(oldOnSubmit) // Dans le cas ou il est passé dans le oldOnSubmit on fait l'ancien submit = form.submit {
oldSubmit(); // Il me genère une exception sous FireFox
}
else {
if (!bSubmitting) // ici la fonction form.submit est appelé {
bSubmitting =
true; oldSubmit(); // Il me genère une exception sous FireFox
}
}
}
if (oldSubmit) {// On place le nouveau submit dans le submit myForm.submit = newSubmit;
}
myForm.onsubmit = newOnSubmit;
Au niveau du HTML, je ne mets pas le code, car celui ci diffère selon les pages. Et je dois me démerder pour que celà fonctionne sans changer les pages HML. D'ou le submit et le onSubmit.
Ce script fonctionne très bien sous IE mais ne fonctionne pas sous FireFox il me génère une erreur. Pour ce qui est du debugger sous IE, je l'avais activé et il ne me génère aucune erreur.
Sous FireFox il me génère une exception :
[Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: mon_script :: newSubmit :: line 110" data: no]
mon_script
Line 110
En faisant des recherche il faudrait overridé le submit du genre :
myForm.submit = newSubmit;
myForm.onsubmit = newOnSubmit;
// capture the onsubmit event on all formswindow.addEventListener(
'submit', newSubmit, true);window.addEventListener(
'onsubmit', newOnSubmit, true);// If a script calls someForm.submit(), the onsubmit event does not fire,// so we need to redefine the submit method of the HTMLFormElement class.HTMLFormElement.prototype.oldSubmit = HTMLFormElement.prototype.submit;
HTMLFormElement.prototype.submit = newSubmit;
HTMLFormElement.prototype.oldOnSubmit = HTMLFormElement.prototype.onsubmit;
HTMLFormElement.prototype.onsubmit = newOnSubmit;
Mais je n'arrive pas à implémenter ce code dans mon code...
Ai je des erreurs ?
Manu