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

Javascript - accessing elements from an unopened page

本文关键字:访问 元素 Javascript      更新时间:2023-09-26

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

按下该按钮将编辑表单中"未打开"页面中的一些元素,然后发布它,所有这些都不需要打开任何额外的弹出/选项卡/窗口。表单发布后,按钮将消失。

所讨论的表单包含唯一的参数,如果不访问其特定页面,则无法检索这些参数,因此我无法单独模拟表单。

我的一些猜测是使用动态iframe设置为"display: none",或Ajax,但否则我不完全确定它是否可能以及如何做到这一点。

谁有什么主意?(对不起,如果问题不是很清楚,我已经尽力描述问题了)

尝试使用框架集。下面给出的示例代码有3页1. 第1页是包含两个框架的父文档。frame1指的是page23.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页更改。

我是这样做的,使用jQuery:

  1. 使用$.get()
  2. 从表单页面获取HTML代码
  3. 从HTML字符串
  4. 提取表单节点
  5. 创建隐藏iframe
  6. 在新的iframe中解析表单的HTML
  7. 修改表单值;
  8. 使用jQuery的.serialize() "URLEncode"表单数据;
  9. 使用$.post()将序列化的数据发送到目标接收响应的回调函数
  10. 如果响应成功,隐藏按钮并移除隐藏按钮iframe

我决定从$.get()返回的HTML字符串中提取表单,因为解析它不需要在使用实际表单作为对象之前加载整个表单页面。使用隐藏iframe进行解析可能不是最"专业"的方式,但它是有效的。