iPad Chrome仅第一个选项卡因window.close而失败

时间:2014-10-31 14:34:36

标签: javascript ipad google-chrome window

我在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")

1 个答案:

答案 0 :(得分:0)

由于JavaScript早期的滥用行为,浏览器只会让您window.close()通过JavaScript或全新窗口创建的窗口。

http://www.w3.org/TR/html51/browsers.html#dom-window-close

  

如果满足以下所有条件,则Window对象上的close()方法应该是   条件得到满足,关闭浏览环境A:

     
      
  • 相应的浏览上下文A可以关闭脚本。
  •   
  • 的   由现任设置指定的负责任的浏览上下文   对象熟悉浏览上下文A。
  •   
  • 负责任   允许由现任设置对象指定的浏览上下文   导航浏览上下文A。
  •   
     

浏览上下文是   如果是辅助浏览上下文,则脚本可关闭   由脚本创建(而不是由用户的操作),或者如果它   是一个顶级浏览上下文,其会话历史记录仅包含   一份文件。