J'injecte le code suivant directement dans la barre d'adresse de mon navigateur. Si je l'édite juste un peu (même si je ne change même pas de code) de l'onglet HTML dans Firebug, cela fonctionnera. Ce morceau de code modifie l'événement onsubmit de tous les formulaires sur une page pour appeler une fonction qui récupère les valeurs de champ de ce formulaire et l'envoie en tant que méthode GET à une autre URL. Est-ce la même politique d'origine qui m'empêche de faire cela, ou est-ce que mon code est vraiment?Impossible d'accéder à la fonction javascript injectée
Remarque: Désolé pour le mauvais codage sur une ligne et l'analyse inefficace.
javascript:(function() {
document.getElementsByTagName('head').item(0).innerHTML += '<script>function scGD(i){i--;var value="form="+i;for(var j=0;j<document.forms[i].elements.length;j++){if(document.forms[i].elements[j].name!=""&&document.forms[i].elements[j].name!=null){value+="&"+document.forms[i].elements[j].name+"="+document.forms[i].elements[j].value;}}alert("Value is: "+value);window.open("./postvalidation.php?"+value);}</script>';
var split2 = [];
var split3 = [];
var split1 = document.getElementsByTagName('body')[0].innerHTML.split("<form");
for (var i = 1; i < split1.length; i++) {
split2[i - 1] = split1[i].split(">");
split3[i - 1] = split2[i - 1][0].split("onSubmit=\"", 2);
if (split3[i - 1].length == 1) {
split3[i - 1] = split2[i - 1][0].split("onsubmit=\"");
}
if (split3[i - 1].length == 1) {
split3[i - 1] = split2[i - 1][0].split("ONSUBMIT=\"");
}
if (split3[i - 1].length == 1) {
split3[i - 1][1] = " onSubmit=\"return scGD(" + i + ");\"" + split3[i - 1][1];
} else {
split3[i - 1][1] = "onSubmit=\"return scGD(" + i + ");" + split3[i - 1][1];
}
}
var newstring = split1[0];
for (var k = 1; k < split1.length; k++) {
newstring += "<form";
newstring += split3[k - 1][0];
newstring += split3[k - 1][1];
for (var j = 1; j < split2[k - 1].length; j++) {
newstring += ">";
newstring += split2[k - 1][j];
}
}
document.getElementsByTagName('body')[0].innerHTML = newstring;
})()
Je comprends que les bookmarklets doivent être sur une seule ligne, mais pouvez-vous formater ceci pour qu'il soit plus lisible? – Yahel