我正在开发的网站遇到一个特殊问题。该问题仅发生在 iPhone(safari)上。
我的设置如下。
1) 我有一个客户端页面 - 显示初始页面,并有一个登录按钮。
2) 用户单击登录按钮,然后显示登录弹出窗口/新窗口(这是通过使用 jquery 'submit' 函数和 target='_blank' 发布表单来创建的)
客户端.html
var formData = '<form style="display: none; margin: 0; padding: 0; border-width: 0; overflow: hidden;" id="MyFormId" action="https://MYSERVER.COM/v2/widgets" method="POST" target="_blank"><input type="hidden" name="action" value="connect"/><input type="hidden" name="referringURL" value="http://MYCLIENT.com/ClientPage.html"/><input type="hidden" name="cartOwnerId" value="A2R6QUFKT17A1O"/></form>';
jQuery("#"+this.getLocation()).append(formData);
jQuery("#"+formIdName).submit();
3) 用户在登录窗口中输入凭据并提交。调用 SERVER 进行身份验证。对于成功的身份验证,我们希望
- 关闭登录窗口
- 将客户端页面重定向到新网址
4) 一切都按计划进行,除了客户端窗口(创建登录弹出窗口/新窗口)不会返回全屏(登录窗口关闭后)。
如果我尝试在登录页面 javascript 中放置 window.opener.focus() ,我会将焦点放在客户端页面上,但登录页面不会关闭(即使我将 window.close 放在 window.opener 之前) .focus())
LOGIN html
jQuery(document).ready(function() {
...
...
window.close();
window.opener.focus()
});
是否有关于如何关闭登录窗口、将客户端页面重定向到新 URL 以及使客户端窗口全屏显示的提示?
如有任何提示,我们将不胜感激。
谢谢
最佳答案
类似这样的工作:
在开场白中:
window.closePopup = function () {
window.popup.close();
window.focus();
}
// open login popup
window.popup = window.open(...);
用户登录后弹出窗口:
window.opener.closePopup();
也就是说,不要让窗口自行关闭,而是让打开程序关闭弹出窗口。我已经尝试过类似的方法,它似乎有时会起作用...我还不太能够找出它不起作用的原因。我知道在我的情况下发生的一件事是用户必须与弹出窗口交互才能使 window.opener.closePopup()
工作...
关于javascript - iPhone - Safari 父窗口焦点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444466/