Javascript - 从未打开的页面访问元素

时间:2011-09-24 02:44:28

标签: javascript post dynamic userscripts

我的问题有点难以解释。我想要做的是,我在某个页面上有一个按钮。当我按下该按钮时,我必须能够访问位于另一页面上的表单元素(,而不打开其他页面)。

按下该按钮将从“未打开”页面编辑表单中的一些元素,然后将其发布,所有这些都无需打开任何额外的弹出/标签/窗口。表单发布后,按钮将消失。

相关表单包含无法访问其特定页面时无法检索的唯一参数,因此我无法单独模拟该表单。

我的一些猜测是使用动态iframe设置为“display:none”或Ajax,否则我不确定它是否可行以及如何操作。

有人会有一些想法吗? (对不起,如果问题不是很清楚,我尽力描述问题)

2 个答案:

答案 0 :(得分:0)

尝试使用frameset。 下面给出了3页的示例代码 1.第1页是包含两个帧的父文档。 2.frame1指的是page2 3.frame2指的是page3

<强> test1.htm

  <html>
<head>
<title>test</title>
<frameset rows="25px,*" frameborder="0" framespacing="0" >
<frame name="Frame2" id="Frame2" src="test2.htm"/>
<frame name="Frame1" id="Frame1" src="test3.htm"/>
</frameset>
</head>
</html>

<强> test2.htm

   <html>
<script>
var global="testing"

</script>

</html>

<强> test3.htm

<html>
<script>
alert(parent.window.frames[0].global);
parent.window.frames[0].global="local"

function test()
{
alert(parent.window.frames[0].global);
}

</script>

<body>
  <input type="button" onclick="test()" />

</body>
</html>

在页面test2中,global的值可以从页面test3.htm更改。

答案 1 :(得分:0)

我是这样做的,使用jQuery:

  1. 使用$ .get()
  2. 从表单页面获取HTML代码
  3. 从HTML字符串中提取表单节点
  4. 创建隐藏的iframe
  5. 在新iframe中解析表单的HTML
  6. 修改表单的值;
  7. “URLEncode”使用jQuery的.serialize();
  8. 表单的数据
  9. 使用$ .post()将序列化数据发布到目标,使用 接收响应的回调函数
  10. 如果响应显示成功,请隐藏按钮并删除隐藏的按钮 iframe中
  11. 我决定从$ .get()返回的HTML字符串中提取表单,因为在将实际表单用作对象之前解析它不需要加载整个表单页面。使用隐藏的iframe进行解析可能不是最“专业”的方式,但它有效。