繁体   English   中英

在iPad Safari上window.open无法正常工作

[英]window.open not working as expected on iPad Safari

我有以下代码用于共享链接功能:

  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 Safari上

  • 将打开一个空白的新标签,上面没有任何内容
  • 当我转到其他选项卡并返回此选项卡时,我看到正在刷新/重新加载新窗口

我认为这是一个问题,因为我尝试先打开一个空白窗口,然后使用链接信息进行更新。

解决办法是什么?

只要您执行以下操作:

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

您已经在创建一个弹出窗口。

而不是在实例化弹出窗口之前,在newWin之外声明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');
    }
  });
});

让我们留一点冗余代码。 安全胜于后悔。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM