window.open实现:javascript父子窗体间数据传递

1 下载量 6 浏览量 更新于2024-09-01 收藏 45KB PDF 举报
在JavaScript中,子窗体与父窗体之间的数据交互是常见的需求,特别是在内容管理和CMS系统中,如DedeCms等。通过`window.open()`函数可以创建一个新的窗口,并实现两个窗口之间的通信。以下是一种常用的方法,用于在父页面和子页面之间传递参数并获取选中的值。 **父页面(核心代码)**: 在这个示例中,有一个名为`SelectArcListA`的JavaScript函数,当用户点击“从已发布文档中选取”按钮时,会调用这个函数。该函数接收一个参数`fname`,通常表示需要传递给子页面的父页面变量。函数使用`window.open()`打开名为`content_select_list.asp`的子页面,并将`fname`和表单元素`form1.keyword.value`作为查询参数传递过去。这样,子页面可以根据这些参数进行相应的处理。 **子页面(核心代码)**: 子页面的JavaScript主要关注于处理接收到的参数和用户的选择。`getCheckboxItem()`函数的作用是获取所有被选中的文章ID。它遍历表单元素`form2.arcID`,检查哪些复选框被选中,并将选中的值拼接成一个字符串返回。此外,还有一个`selAll()`函数,用于全选或取消全选所有文章ID。 为了在子页面关闭时将选中的值传递回父页面,可以在子页面关闭时添加一个事件监听器,例如`onunload`或`beforeunload`,来执行类似这样的操作: ```javascript window.onunload = function() { var selectedValues = getCheckboxItem(); parent.window.parent.SelectArcListA(selectedValues); // 将选中的值传递回父页面 }; ``` 这种方式确保了子页面关闭时,父页面能够获取到子页面用户的选择。需要注意的是,由于浏览器的安全限制,这种方法可能在某些情况下(如用户直接关闭浏览器或按`Esc`键)无法传递数据。为了更可靠地实现数据交互,可以考虑使用POST请求或利用`localStorage`和`sessionStorage`来存储临时数据。 总结来说,JavaScript中的子窗体与父窗体相互传值主要依赖于`window.open()`的参数传递和子页面的事件监听机制。通过组合使用,可以实现两个页面之间的数据交换,以便实现特定的功能,如内容管理中的选择与筛选。