Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将javascript函数从一个页面注入另一个页面_Javascript_Dom_Post - Fatal编程技术网

如何将javascript函数从一个页面注入另一个页面

如何将javascript函数从一个页面注入另一个页面,javascript,dom,post,Javascript,Dom,Post,好的,让我先说一下,我几乎没有编程经验,所以如果我的解释掩盖了一些严重的无知,我很抱歉。我一直想学一些技巧,但我找不到任何教程 交易如下: 有一个网站可以给你各种各样的科学问题,并为你的输入打分。对于每个问题,都有一个名为Practice Other Versions的按钮,该按钮将生成一个弹出框,其中包含该问题的新的类似版本。这个新版本还有一个名为Show Answer的按钮,它显然显示了解决方案 我使用FireBug查找“显示答案”按钮的代码: <input type="submit"

好的,让我先说一下,我几乎没有编程经验,所以如果我的解释掩盖了一些严重的无知,我很抱歉。我一直想学一些技巧,但我找不到任何教程

交易如下:

有一个网站可以给你各种各样的科学问题,并为你的输入打分。对于每个问题,都有一个名为Practice Other Versions的按钮,该按钮将生成一个弹出框,其中包含该问题的新的类似版本。这个新版本还有一个名为Show Answer的按钮,它显然显示了解决方案

我使用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的Net选项卡,以在单击Show Solutions(显示解决方案)后发现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来强制调用key函数?最理想的情况是,有一个bookmarklet可以循环所有问题,调用关键函数,并显示答案

考虑到我知识贫乏,我不知道该尝试什么。我在地址栏中尝试过这样简单的事情

  javascript:document.forms[0].showAnswer.value = 1;
我知道它做了些什么,因为当我打字的时候

  javascript:alert(document.forms[0].showAnswer.value);
它提示1,但我只是不确定它到底在做什么,或者我还必须做什么

编辑


让我试着澄清一下——我不拥有这个网站,所以我正在尝试做一些客户端javascript工作来操纵这个网站做我想做的事情。请注意,我甚至不确定这是否可行

在站点的一部分,在一个名为practice.tpl的页面中,它允许我按下一个名为Show-Answer的按钮。该按钮调用上述键函数并显示解决方案

但是,在另一个页面上,按钮和功能不存在。所以我想知道我是否可以借用practice.tpl页面中的键函数,并将其注入另一个页面

编辑2

这是两页的源代码:

主页,我试图在其中注入代码

额外问题页面关键功能所在的页面 它不允许我发布多个链接-因此取消隐藏以下链接:

你可以在你的函数中定义文档的范围,因此你发送的是正确的文档。如果我正确理解了你的问题,那就有点难理解了

 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

这就是你想做的吗?调用主“键”函数并使其作用于当前页面?

您已经完成了一半。从我看到的情况来看,ShowAnswers按钮更改隐藏表单字段的值,然后在页面上提交表单。它以相同的形式返回,并填充了答案

你的 javascript:document.forms[0].showAnswer.value=1; 已经完成了一半,但是您需要提交表单,以便服务器可以向您提供包含答案的新表单

javascript:document.forms[0].showAnswer.value=1;document.forms[0]。提交

如果这是有效的javascript,可能会起作用。我不怎么用它写。您可能还想考虑调用KEY函数,而不是直接设置“SealError”的值,这取决于什么样的StYPOS;他正在做什么

如果您不想创建bookmarklet,那么您可能需要考虑编写一个自动生成javascript的greasemonkey脚本


编辑:当然,通过链接到页面/页面源代码,我们可以提供更多帮助。

您可以将我们链接到该页面,然后我们可以提供更多帮助吗?以下是两个页面的源代码:主页,我正在尝试插入代码的页面,其他问题页面,关键功能是让我尝试澄清-我不拥有该网站,因此,我正在尝试做一些客户端javascript工作,以操纵该站点,使其达到我想要的效果。请注意,我甚至不确定这是否可行。在站点的一部分,在一个名为practice.tpl的页面中,它允许我按下一个名为Show-Answer的按钮。该按钮调用上述键函数并显示解决方案。但是,在另一个页面上,按钮和功能不存在。所以我想知道我是否可以借用practice.tpl页面中的键函数,并将其注入另一个页面。当我在地址栏中键入javascript时,firebug出现了以下错误:document.forms[0]。showAnswer未定义,这意味着,我认为表单在主页上没有showAnswer属性,但是他们在练习题页面上做了。是否存在使表单具有showAnswer属性的方法?查找表单所有属性的代码是什么?您可以在firebug中看到所有表单项,隐藏
或者不是。JavaScript所做的只是更改了一个隐藏的。很可能你只能在测试题上给出答案,而不能在我假设的主要测试题上给出答案。他们必须在服务器端对其进行编程,以查看表单项并返回答案。我发布了上述网站的来源-你看了吗?
window.opener.key(value,value, document); // sending the local document