簡體   English   中英

如何將javascript函數從一頁注入到另一頁

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM