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

时间:2013-10-04 23:52:11

标签: javascript jquery css ipad mobile-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上

  • 打开一个空白的新标签,上面没有任何内容
  • 当我转到其他标签并返回此标签时,我看到NEW WINDOW正在播出 刷新/重新加载

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

解决方案是什么?

1 个答案:

答案 0 :(得分: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');
    }
  });
});

让我们有一些冗余代码。 安全比抱歉更好。