我在iPad上有一个奇怪的问题,如下所示。
有一个网页,它调用window.open和window.close来选择用户并关闭。 H / W在第一个标签页面时,它可以成功调用window.open打开页面选择用户,但是当点击选择调用window.close时,它没有任何改动就无法工作,仍然停留在当前屏幕上选择用户。
但是如果我在第2,第3 ......标签页面打开网页,它可以成功window.open和window.close来完成用户选择过程。
同时,如果我清除所有浏览数据并关闭所有标签页,那么新的第一个标签页将适用于window.open和window.close。
但是,如果我不仅清除了所有浏览数据,而且还强行关闭Chrome(双击主页按钮并向外滑动Chrome),则新的第一个标签页将失败并显示window.close。
另一个有趣的发现是,如果我在Chrome的第一个标签页面上打开google.com,那么在第二个标签页面中仍然可以打开我的网页并调用window.open和window.close,它们都可以正常运行。
我是否知道Chrome的第一个标签是否存在任何差异,或者iPad中的Chrome.close是否存在其他错误。
最后,我发现可能是问题根,因为第1个选项卡中的opener为null。
你能帮忙检查一下吗?
function doSelect( userid, username )
{
opener.document.`formName`.`fieldPrefix`_ID.value = userid;
opener.document.`formName`.`fieldPrefix`_Name.value = username;
if ( opener.document.`formName`.`fieldPrefix`_SavedName )
{
opener.document.`formName`.`fieldPrefix`_SavedName.value = username;
}
if ( opener.markDirty != null )
{
opener.markDirty();
}
window.close();
}
function chooseUser( prefix, title, filter ){
window.open("/livelink/livelink.exe?func=user.SelectUserDlg&formname=ReportPrompts&fieldprefix=" + prefix + "&title=" + title + filter + "&DisplayUserName","","height=340,width=680,scrollbars=yes,resizable=yes,menubar=no")
答案 0 :(得分:0)
由于JavaScript早期的滥用行为,浏览器只会让您window.close()
通过JavaScript或全新窗口创建的窗口。
http://www.w3.org/TR/html51/browsers.html#dom-window-close
如果满足以下所有条件,则Window对象上的close()方法应该是 条件得到满足,关闭浏览环境A:
- 相应的浏览上下文A可以关闭脚本。
- 的 由现任设置指定的负责任的浏览上下文 对象熟悉浏览上下文A。
- 负责任 允许由现任设置对象指定的浏览上下文 导航浏览上下文A。
浏览上下文是 如果是辅助浏览上下文,则脚本可关闭 由脚本创建(而不是由用户的操作),或者如果它 是一个顶级浏览上下文,其会话历史记录仅包含 一份文件。