我从未在堆栈上找到问题的答案,但现在有一个我无法解决的答案。
我刚刚将公司内部网转换为PWA。它在我的Android手机上运行良好,但是存在问题。我有一个在单独的窗口中打开的短信和电话组件。这在桌面上效果很好,因为如果窗口已经打开,我只切换了focus(),否则就打开了一个窗口。在移动PWA上,如果窗口未打开,则窗口会正确打开,并且可以从子窗口按名称重新聚焦到打开器。但是,如果我尝试从父窗口(打开器窗口)返回到子窗口,它将无法正常工作,并且无法弄清原因。
代码如下:
// this is the parent
function popupnr(mylink, windowname, refocus) {
// open the window with blank url
if (document.documentElement.clientWidth > 700) {
thewidth = 700;
}
else {
thewidth = document.documentElement.clientWidth;
}
openspecs = 'height=' + document.documentElement.clientHeight + ',width=' + thewidth + ',toolbar=1,menubar=1,location=1,status=0';
var mywin = window.open('', windowname, openspecs);
// if we opened the window
if (!refocus || mywin.closed || (!mywin.document.URL) || (mywin.document.URL.indexOf("about") == 0)) {
transfer = setTimeout(function(){
mywin.location = mylink;
}, 400);
}
else if (refocus) {
mywin.focus();
}
// return the window
return mywin;
}
这是我用来重新关注开瓶器的方法:
bossname = 'waterbase';
window.name = bossname;
// this is the child window: open on parent, or just focus if the current page of the parent is the target is the same
function popupnr_motherf(mylink) {
mywin = bossname;
if (opener.document.URL.indexOf(mylink) == -1) {
window.open(mylink,bossname).focus();
}
else {
window.open('',bossname).focus();
}
}
我认为这可能与服务人员有关,因为我已经不得不添加第一次打开窗口时在上面代码中看到的400ms延迟,但是我试图在focus(),它什么也不做。有趣的是,我在打开器窗口中还有其他链接,单击这些链接可以在子窗口中正确设置电话号码,只是没有焦点返回到子窗口。任何帮助表示赞赏。