1

我正在构建一个将始终在 iPad 上查看的小型网站,我正在使用元标记:

<meta name="apple-mobile-web-app-capable" content="yes">

并将站点添加到主页以强制 iPad 将其视为应用程序。这消除了地址栏和后退按钮等......

我有一个框架集内的站点,最初该站点将加载一个index.htm登录页面,该页面具有指向包含<frameset>'s 和<frame>'s 的其他页面的链接。每个页面都有一个导航框架和一个用于显示内容的框架。第二个框架的内容将是一个外部网页。

我遇到了一个问题,在应用程序模式下启动站点并单击登录页面中的链接会导致在 safari 中打开一个新窗口 - 本质上它会脱离应用程序上下文并加载 safari,我通过以下方式解决了这个问题:

<script type="text/javascript">
    $(document).ready(function () {
        $('a').click(function (e) {
            window.location = $(this).attr('href');
            e.preventDefault();
        });
    });
</script>

这使我网站下的所有链接都加载在“应用程序”中。

现在,问题来了。

加载外部网页的框架显然会包含链接,当单击框架中的这些链接时,这会启动 safari 并脱离应用程序上下文,并且应用程序会恢复到以前的行为。

有没有办法确保网站上的所有链接都在“应用程序”中打开,即使是那些包含在<frame>元素中的链接?

这里的总体目标是防止用户跳出应用程序并在网上做他们喜欢做的任何事情

4

1 回答 1

0

我知道你说它是一个网站,但看起来你正在制作类似于应用程序的东西,我很想建议使用 phonegap。http://phonegap.com/

原因是,您将无法阻止在 safari 中打开链接。尽管 Brainfeeder 提出了将外部 html 加载到 div 中的好建议,但我认为当用户单击该 div 内的外部站点的链接时,您仍然会遇到同样的问题。

使用 phonegap,您只需创建一个新项目,将代码原样转储到 www 文件夹中,然后您将立即拥有可以部署到 iPad 的应用程序。

但主要让我建议这是一个名为 inAppBrowser 的功能,它可以让您指定要在前台 web 视图中打开的链接,这样当用户完成查看时,他们只需单击完成并返回到您的应用程序。 http://docs.phonegap.com/en/3.0.0/cordova_inappbrowser_inappbrowser.md.html#InAppBrowser

欣赏它似乎只是为了解决 safari 问题有点开销,但可能值得考虑。

于 2013-10-08T00:38:09.540 回答