1

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

因为我使用了许多应用程序内部链接,所以我在应用程序中添加了以下 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。

谁能帮我这个?

4

1 回答 1

1

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

你试过这个答案吗?


我之前的回答:

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;});

        }
    });
  });
}
于 2012-04-11T18:33:39.350 回答