【发布时间】:2013-09-17 04:56:55
【问题描述】:
我有一个包含表单的页面。表单通过 Javascript 调用提交,并通过设置为“_blank”的目标打开一个新窗口。
<div id="ajax_response_html">
<form name="testform_name" id="testform_id" method="post" target="_blank" action="index.jsp" accept-charset="UTF-8" />
<input type="hidden" name="textbox_name" id="textbox_id" value="test" />
</form>
</div>
在 onclick 事件中,使用 ajax 调用在上述 div 中设置表单。那时,我用 JavaScript 提交表单。
function setResponse() {
var response = http.responseText;
document.getElementById("ajax_response_html").innerHTML = response;
document.getElementById("testform_id").submit();
}
一个新窗口打开并且工作正常。但是,我有一个使用 webview 的移动应用程序 - 应用程序内的浏览器会话 - 它不会打开新窗口。目前,我无法控制该应用程序,也无法访问其源代码。我唯一的办法是修改页面以安抚应用程序和非应用程序用户。对于前者,它将在同一个窗口中打开。对于后者,它将打开一个新窗口。这就是计划。
我的想法是检测是否打开了一个新窗口。如果没有,那么我在同一个窗口中打开它。
if (!windowOpen) {
// Open page in the same window
}
如何检测提交表单后是否打开了新窗口?
谢谢。
更新
我与该应用程序的开发人员交谈,他说他已禁用弹出窗口并且不会很快更改。
我修改了页面,因此我没有通过 ajax 调用 html 表单文件,而是使用 JavaScript window.open 函数打开同一个文件:
function openForm() {
var formWindow = window.open('FormFile.html', '_blank', 'height=' + screen.height + ', width=' + screen.width');
}
在 FormFile.html 中,我附加了一个提交表单的 onload 事件,但目标设置为“_self”,而不是“_blank”。
现在,它会在应用内的同一个窗口中打开,并在其他任何地方打开一个新窗口。我的问题是,既然弹出窗口在应用程序中被禁用,为什么 window.open 可以工作,而我用来提交表单的原始方法却失败了?
【问题讨论】:
标签: javascript html forms tabs window