Хорошо, позвольте мне предвосхитить это, сказав, что у меня мало опыта программирования, поэтому я прошу прощения, если мое объяснение противоречит некоторому серьезному невежеству. Я всегда хотел научиться некоторым трюкам, но никогда не смогу найти никаких учебных пособий.
Вот сделка:
Есть веб-сайт, который дает вам различные научные вопросы и оценивает входные данные. Для каждого вопроса есть кнопка «Практика других версий», которая создает всплывающее окно с новой, похожей версией проблемы. Эта новая версия также имеет кнопку «Показать ответ», которая, очевидно, показывает решения.
Я использовал FireBug, чтобы найти код кнопки Показать ответ:
<input type="submit" onclick="key('0','1')" style="border: 1px solid rgb(51, 102, 153); margin-left: 1%;" value="Show Answer" name="Key">
Я посмотрел на вкладку «DOM» FireBug, чтобы посмотреть внутренний код функции ключа:
function key(pos, showAnsFlag) {
setYpos();
if (showAnsFlag == 1) {
document.forms[0].showAnswer.value = 1;
document.forms[0].hideAnswer.value = 0;
} else {
document.forms[0].hideAnswer.value = 1;
document.forms[0].showAnswer.value = 0;
}
document.forms[0].pos.value = "";
document.forms[0].keypos.value = pos;
document.forms[0].randpos.value = "";
document.forms[0].solpos.value = "";
document.forms[0].subaction.value = "key";
}
Я также посмотрел на вкладку «Сеть» Firebug, чтобы узнать параметры POST после того, как я нажал «Показать решения»:
Key Show Answer
RC_821796_0_0_821813 mc //[These are the names of the problems]
RC_821796_0_0_821813 1
RC_821796_0_1_821813 mc
RC_821796_0_1_821813 0
UserPass //[ERASED, because I'm not sure if it can be used maliciously]
feedback0 rmh
hideAnswer 0
hideSolution
keypos 0
pos
randpos
showAnswer 1
showSolution
solpos
struct CuDMAcAACEAuEuEaANErASAJANBPBjDABkCiAaAxAEEfAjCgAvAjDjDQCTDTCbBjAUBtDXDXBqEXAFAjEPAVEMESvVBVzUCcEwALAMCSBQDewWDTAPBUEBCeArESCmDWAfErAXETBFEoBDCEDxBODlCbAeEnCNEKDmDgBHAJESEKATDmAoEFAdCUALCiCLBXCcDFATAcDRDoCwERuUBTDKEkBKESCXATAbDRAwBYEFAeDREWDBCdCeElBJCPCSDtAeABBxDwDDByEPAwEVAtAoDADWCkCCBBAwDNCyEECEAlCeACDCAPCmAsDM
subaction key
ypos 196
Хорошо, так что все, что есть на странице, когда я "практикую другую версию". Моя идея заключается в том, что я хочу вызывать функцию «ключ» (или, по крайней мере, функцию, которая действует точно так же, как она), когда я на обычной странице, а не на странице «Показать другую версию». Проблема в том, что когда я проверяю DOM обычной страницы, у него даже нет ключевой функции, которая доступна.
Есть ли способ ввести javascript на страницу для принудительного вызова функции ключа? В оптимальном варианте было бы интересно иметь букмарклет, который просматривал все Вопросы, вызывал ключевую функцию и выявлял ответы.
Учитывая мой недостаток знаний, я не знал, что попробовать. Я пробовал простые вещи, как это (в адресной строке)
javascript:document.forms[0].showAnswer.value = 1;
И я знаю, что он что-то сделал, потому что, когда я печатаю
javascript:alert(document.forms[0].showAnswer.value);
Он запрашивает «1», но я просто не уверен, что именно он делает, или что мне еще нужно делать.
Редактировать
Позвольте мне попытаться уточнить - я не являюсь владельцем сайта, поэтому я пытаюсь выполнить какую-то работу на стороне клиента по javascript, чтобы манипулировать сайтом, делая то, что я хочу (заметьте, я даже не уверен это возможно).
В одной части сайта, на странице с названием "Practice.tpl", я могу нажать кнопку "Показать ответ" (кнопка вызывает вышеупомянутую ключевую функцию и раскрывает решение).
Однако на другой странице кнопка и функция не существуют. Поэтому мне было интересно, смогу ли я как-нибудь позаимствовать функцию ключа на странице practice.tpl и вставить ее на другую страницу.
Редактировать 2
Это исходный код двух страниц:
Главная страница (та, где я пытаюсь ввести код)
http://pastebin.com/r7KVMU1N
Страница «Дополнительные проблемы» (та, где находится ключевая функция)
http://pastebin.com/D8Nc6fbk