在Safari中打开链接后,iPad网络应用程序冻结

时间:2012-04-11 18:08:42

标签: javascript jquery ipad freeze iphone-standalone-web-app

我开发了一个小型网络应用程序,可以在我的浏览器中完美运行(Firefox,Chrome,iPad上的Safari)。然后我决定修改应用程序,使其作为iPad上的独立Web应用程序运行。这没问题,因为我在网上找到了很好的信息。

因为我使用了很多app-internal链接,所以我在应用程序中添加了以下JavaScript jQuery代码:

if (window.navigator.standalone) {
    // running as web app

    $(function () {
        $('a').each(function () {
            if (!$(this).hasClass('external')) {
                var href = $(this).attr('href');
                $(this).attr('href', 'javascript:this.location = \'' + href + '\'');
            }
        });
    });
}

如果应用程序以独立模式运行,则此代码会修改所有没有CSS类external的链接,因此它们不会在新的Safari窗口中打开。这段代码工作正常。

问题在于,如果我打开 外部的链接,则会打开一个新的Safari窗口(如预期的那样)。但当我切换回我的应用程序(使用四指手势)时,应用程序被冻结:没有滚动,没有可点击,没有任务切换,也没有五指手势。当我按下主页按钮时,iPad会在一瞬间显示我的主屏幕,然后立即切换到iPad搜索屏幕。当我关闭屏幕再打开时,我就在主屏幕上。

唯一有效的手势是用于调出任务栏的四指手势(就是它的名字?)。当我使用任务栏终止应用程序时,它仍然在屏幕上,并且iPad的行为就像我没有终止应用程序一样(参见最后一段)。感觉像应用程序疯狂的方式。

我不知道我做错了什么。这是一个非常简单的网页,只有很少的JavaScript和一个没有深层嵌套的HTML结构。

该设备是带有iOS 5.1的iPad 2 3G。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:1)

所以我在阅读此链接之前给出了这段代码:iPhone Safari Web App opens links in new window

您是否尝试过This answer


我之前的回答:

if (window.navigator.standalone) {
  // running as web app

  $(function () {
    $('a').each(function () {
        if (!$(this).hasClass('external')) {
            var href = $(this).attr('href');
            $(this).click(function() { window.location = href; return false;});

        }
    });
  });
}