Мне никогда не удавалось найти ответ на вопрос в стеке, но у меня есть один, который я сейчас не могу решить.
Я только что преобразовал интранет своей компании в PWA. Он хорошо работает на моем телефоне Android, но есть проблема. У меня есть смс и компонент телефона, которые открываются в отдельных окнах. Это прекрасно работает на рабочем столе, так как я просто переключаю фокус (), если окно уже открыто, или открываю окно, если это не так. На мобильном 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();
}
}
Я думаю, что это может иметь какое-то отношение к работнику службы, поскольку мне уже пришлось добавить задержку в 400 мс, которую вы видите в приведенном выше коде при первом открытии окна, но я попытался установить задержку для focus (), и он ничего не делает. Что интересно, у меня есть другие ссылки в открывшемся окне, которые при нажатии правильно устанавливают номер телефона в дочернем окне, просто нет никакого внимания назад ребенку. Любая помощь приветствуется.