window.open не работает должным образом на iPad Safari

0

У меня есть следующий код для функции общего доступа:

  longurl = "www.google.com"
  var newWin = window.open('', share_win_name, 'width=826,height=836')
  gapi.client.load('urlshortener', 'v1', function() {
    var request = gapi.client.urlshortener.url.insert({
        'resource': {
            'longUrl': longurl
        }
    });
    var resp = request.execute(function(resp) {
      if (resp.error) {
        newWin.location = share_link + encodeURIComponent(longurl)
      } else {
        newWin.location = share_link + encodeURIComponent(resp.id)
      }
    });
  });

Этот код работает на рабочем столе. Но на сафари ipad

  • пустая новая вкладка открывается без ничего
  • Когда я перехожу на другую вкладку и вернусь на эту вкладку, я вижу, что обновляется/перезагружается NEW WINDOW

Я считаю, что это проблема, когда я пытаюсь сначала открыть пустое окно, а затем обновить информацию о ссылке.

Каково решение?

Теги:
ipad
mobile-safari

1 ответ

0

Как только вы выполните следующее:

newWin = window.open('', share_win_name, 'width=826,height=836');

Вы уже создаете всплывающее окно.

Вместо того, чтобы создавать всплывающие окна раньше, объявите переменную newWin вне области видимости.

Внутри функций обратного вызова создайте экземпляр всплывающего окна.

longurl = "www.google.com"
var newWin;
gapi.client.load(...);
var resp = request.execute(function(resp) {
    if (resp.error) {
        newWin = window.open( share_link + encodeURIComponent(longurl), share_win_name, 'width=826,height=836');
    } else {
        newWin = window.open( share_link + encodeURIComponent(resp.id), share_win_name, 'width=826,height=836');
    }
  });
});

Пусть будет немного избыточного кода. Лучше быть в безопасности, чем сожалеть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню