有两个页面 A.jsp 和 B.jsp, A.jsp有一个提交操作, B.jsp是提交操作的Action,
在 A.jsp 页面上加上<base target="_self">, 在IE6.0上, A.jsp的窗口的内容会变成B.jsp, 并且A.jsp的内容加会被覆盖, 但在IE7.0上还是会弹出新的窗口.
怎么做到 A.jsp 提交后不弹出新窗口? 并且 A.jsp 的内容不改变呢? 我这里有几个简单的方法
一. 在A.jsp页面中实现
A.jsp
<form name="form1" method="post" target="submit2Here" action="B.jsp">
//your html code
</form>
<iframe name="submit2Here" style='display:none'></iframe>
这样提交后B.jsp的内容就会被放到名字为submit2Here的iframe中
在B.jsp的JS中,
用window.parent可以获取A.jsp的window;
用window.parent.document可以获取A.jsp的document;
用window.parent.Afunction()可以调用A.jsp中定义的JS方法Afunction;
这样就可以用JS操作A.jsp 中的元素和方法了
二. 使用另外的页面C.jsp
C.jsp
<iframe name="submitPage" src="A.jsp" width="900" height="630" frameborder="no" border="0" marginwidth="0" marginheight="0" allowtransparency="yes" ></iframe> <iframe name="submit2Here" style='display:none'></iframe>
A.jsp
<form name="form1" method="post" target="submit2Here" action="B.jsp"> //your html code </form>
这样提交后B.jsp的内容就会被放到C.jsp中名字为submit2Here的iframe中在B.jsp的JS中,用window.parent.document.frames['submitPage'].contentWindow 可以获取A.jsp的window;可以用alert(window.parent.document.frames['submitPage'].contentWindow.name);或alert(window.parent.document.frames[0].contentWindow.name); 试试用window.parent.document.frames['submitPage'].contentWindow.document可以获取A.jsp的document;用window.parent.document.frames['submitPage'].contentWindow.Afunction()可以调用A.jsp中定义的JS方法Afunction;这样就可以用JS操作A.jsp 中的元素和方法了
用 contentWindow 属性, 这个能兼容IE, FireFox 等浏览器.