jsp页面中frame与子页面、父页面参数传递方法解析

4星 · 超过85%的资源 需积分: 50 81 下载量 187 浏览量 更新于2024-09-22 收藏 1KB TXT 举报
"在网页开发中,特别是在使用JSP(JavaServer Pages)时,有时我们需要在框架(frame)之间以及子页面与父页面之间传递参数。这种交互对于构建复杂的多页面应用是至关重要的。以下是一些关于如何进行这种参数传递的方法和示例代码。 在JSP中,frame之间的参数传递可以通过JavaScript实现,因为每个frame实际上都有自己的独立文档和DOM(文档对象模型)。例如,我们可以使用`document.frames`对象来访问和操作frame内的元素。下面的代码展示了如何从父页面获取子frame中的输入框值: ```html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"/> <title>父页面</title> <script type="text/javascript"> function getChildEl() { alert(document.frames("inner").document.getElementById("text1.inner").value); } </script> </head> <body> <input type="text" id="text1.outter" value="outtertext"/> <input type="button" value="获取子页面值" onclick="getChildEl()"/> <br/> <iframe id="inner" name="inner" src="child.html"></iframe> </body> </html> ``` 在这个例子中,当点击按钮时,`getChildEl`函数会被调用,它通过`document.frames("inner")`访问到名为"inner"的frame,并进一步找到该frame内的ID为"text1.inner"的输入框,然后弹出其值。 对于子页面向父页面传递参数,可以使用`parent`关键字来引用父窗口的DOM。以下是一个简单的例子: ```html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"/> <title>子页面</title> <script type="text/javascript"> function setParentEl() { parent.document.getElementById("text1.outter").value = "子页面值"; // 如果需要触发父页面上的事件,可以这样: // var event = document.createEvent('HTMLEvents'); // event.initEvent('customEvent', true, false); // customEvent为自定义事件名 // parent.document.getElementById("targetElement").dispatchEvent(event); } </script> </head> <body onload="setParentEl()"> <!-- 在子页面中无需显示任何内容 --> </body> </html> ``` 在这个子页面中,`setParentEl`函数会将自身的值设置为"子页面值",并赋给父页面中ID为"text1.outter"的输入框。如果需要触发父页面上的某个事件,还可以创建并派发自定义事件。 这种参数传递方式在多frame布局或嵌套页面中非常有用,可以帮助各部分之间共享数据或执行特定操作。不过,需要注意的是,由于同源策略的限制,只有同源的frame才能互相访问,跨域的frame之间无法直接进行DOM操作。如果需要跨域传递数据,可以考虑使用其他机制,如postMessage API。"