模式窗口提交表单时竟然弹出新窗口
今天在工作中,发现我的模式窗口在提交表单数据时总是会弹出一个新窗口,我对JS代码检查了好久,甚至对后台的代码都检查过了,依然弄不明白。后来在网上一查,原来这是模式窗口的问题,要解决它有多种方法:
1.在页面的head标签中,添加<base target=”_self”>
这个方法最简单,我就是添加这么一句,就轻松搞定。另外补充一点,HTML官方文档描述中写道,当使用时,BASE 元素必须出现在文档的 HEAD 内,在任何对外部源的引用之前。
参考代码
<!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.0 Transitional//EN”>
<html>
<head>
<title>这个是标题</title>
<meta name=”GENERATOR” content=”Microsoft Visual Studio .NET 7.1〃>
<meta name=”ProgId” content=”VisualStudio.HTML”>
<meta name=”Originator” content=”Microsoft Visual Studio .NET 7.1〃>
<meta http-equiv=”Pragma” content=”no-cache”>
<meta http-equiv=”no-cache”>
<meta http-equiv=”Expires” content=”-1〃>
<meta http-equiv=”Cache-Control” content=”no-cache”>
<link href=”styles/oa/css.css” rel=”stylesheet” type=”text/css” />
<base target=”_self” />
<script language=”javascript”>
function Load(){
alert(“say Hello!”);
}
</script>
</head>
……………………………………………………
2.使用框架iframe可以避免页面在新窗口中打开。由于showModalDialog()是不能够提交给自己的,提交给自己的话就会有新页面产生,所以你要指写form里的target等于一个值。 在showModalDialog()打开的子窗口的表单中:<form target=meizz action=hello.jsp …> ,然后在页面中再加入一个隐藏的iframe:
<iframe name=meizz width=0 height=0 frameborder=0 style=”display: none”><iframe>
3.我的错误是在form 哪里加了target="self",如这样示: <form action="/baseLibraryAction.do?method=saveFeedBack" method="post" target="self"> 。却没有在js 全局中加上window.name = "self",提交表单同样会弹出窗口。把target="self"去掉,再在head标签中 加上<base target=”_self”>