[英]How to inject a javascript function from one page into another
好吧,讓我先說一點我沒有編程經驗,因此,如果我的解釋掩蓋了一些嚴重的無知,我深表歉意。 我一直想學習一些技巧,但我永遠找不到任何教程。
這是交易:
有一個網站可為您提供各種科學問題並為輸入評分。 對於每個問題,都有一個名為“其他實踐版本”的按鈕,該按鈕會產生一個彈出框,其中包含新的類似版本的問題。 這個新版本還具有一個名為“顯示答案”的按鈕,該按鈕顯然顯示了解決方案。
我使用FireBug查找“顯示答案”按鈕的代碼:
<input type="submit" onclick="key('0','1')" style="border: 1px solid rgb(51, 102, 153); margin-left: 1%;" value="Show Answer" name="Key">
我查看了FireBug的“ DOM”標簽,以查看關鍵功能的內部代碼:
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”,但是我不確定它到底在做什么,或者我還必須做什么。
編輯
讓我嘗試clarify--我沒有自己的網站,所以我試圖做一些客戶端JavaScript的工作現場操作去做我想做的(請注意,我什至不知道這是可能的)。
在該網站上的一個部分,在一個名為“practice.tpl”頁它讓我按一個叫做“顯示答案”按鈕(按鈕調用上述關鍵功能,並揭示了解決方案)。
但是,在另一頁上,按鈕和功能不存在。 所以我在想,如果我能以某種方式借在practice.tpl頁面的關鍵功能,並注入到另一頁。
編輯2
這是兩個頁面的源代碼:
主頁(我要在其中插入代碼的頁面) http://pastebin.com/r7KVMU1N
“其他問題”頁面(關鍵功能所在的頁面)不會讓我發布多個鏈接-因此請消除以下鏈接的晦澀之處: http://pastebin.c [] om / D8Nc6fbk
您可以在函數中確定文檔的范圍,以便向其發送正確的文檔(如果我正確地理解了您的問題,則很難遵循該文檔)
function key(pos, showAnsFlag, doc) {
setYpos();
if (showAnsFlag == 1) {
doc.forms[0].showAnswer.value = 1;
doc.forms[0].hideAnswer.value = 0;
} else {
doc.forms[0].hideAnswer.value = 1;
doc.forms[0].showAnswer.value = 0;
}
doc.forms[0].pos.value = "";
doc.forms[0].keypos.value = pos;
doc.forms[0].randpos.value = "";
doc.forms[0].solpos.value = "";
doc.forms[0].subaction.value = "key";
}
在頂級應用程序上:
key(value, value, document); // sending the local document (
在彈出頁面上:
window.opener.key(value,value, document); // sending the local document
這是您要做什么? 調用主“鍵”功能並使其作用於當前頁面?
你在那兒。 從我所看到的,顯示答案按鈕可改變一個隱藏的表單字段的值,然后提交頁面上的形式。 它回來與填充相同的形式和答案。
您javascript:document.forms[0].showAnswer.value = 1;
是半路那里,但你需要提交表單,因此該服務器可以給你新的形式(附答案含稅)。
javascript:document.forms[0].showAnswer.value = 1;document.forms[0].submit();
可以工作,如果是有效的JavaScript(我不寫了)。 您可能還需要考慮調用鍵功能,而不是直接設置的“showanswer”的值,這取決於setYpos();
是在做。
如果你不想做一個書簽,你可能要考慮編寫的Greasemonkey腳本,自動執行的JavaScript。
編輯:當然有一個鏈接,我們能更多地幫助網頁/網頁源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.