почему мое событие focus () не запускается в моем PWA? - PullRequest
1 голос
/ 10 марта 2019

Мне никогда не удавалось найти ответ на вопрос в стеке, но у меня есть один, который я сейчас не могу решить.

Я только что преобразовал интранет своей компании в 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 (), и он ничего не делает. Что интересно, у меня есть другие ссылки в открывшемся окне, которые при нажатии правильно устанавливают номер телефона в дочернем окне, просто нет никакого внимания назад ребенку. Любая помощь приветствуется.

...