Я вводил следующий код непосредственно в адресную строку браузера. Если я отредактирую его немного (хотя и не изменив код) со вкладки HTML в Firebug, он будет работать. Этот фрагмент кода изменит событие onsubmit всех форм на странице, чтобы вызвать функцию, которая извлекает значения поля этой формы и отправляет ее как метод GET на другой URL. Является ли это политикой такого же происхождения, которая мешает мне это делать, или мой код действительно не так?Не удается получить доступ к javascript, введенной функции
Примечание: Извините за ужасное однострочное кодирование и неэффективный синтаксический анализ.
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;
})()
Я понимаю, что букмарклеты должны быть на одной строке, но можете ли вы отформатировать ее так, чтобы ее можно было читать? – Yahel