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