【问题标题】:Developing website for iPad only - force all links to be opened in app mode仅为 iPad 开发网站 - 强制所有链接以应用模式打开
【发布时间】:2013-09-23 05:07:37
【问题描述】:

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

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

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

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

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

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

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

现在,问题来了。

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

有没有办法确保网站上的所有链接在“应用”中打开,即使是包含在&lt;frame&gt; 元素中的链接?

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

【问题讨论】:

  • 我知道这不是您问题的直接答案,但是如果您试图阻止用户退出应用程序,那么是什么阻止他们简单地点击主页按钮并转到Safari 从那里访问互联网?
  • @Nick iPad 将包含在一个展示柜中 - 它会覆盖主页按钮
  • 如果 iPad 将专门用于此目的,您不能简单地卸载 Safari 吗?
  • @Tip_Top 这与我已经拥有的防止锚打开 safari 的修复方法类似。不幸的是,它不会阻止框架内加载的链接使用默认行为。
  • @DGibbs 您仍然可以使用 ajax 加载 html 文件内容。不需要服务器端语言。您可以将div 设为目标。每次点击链接时,都会在 div 中加载新的 html。 Safari 不需要使用该方法打开任何其他选项卡。

标签: javascript html ipad frame frameset


【解决方案1】:

我知道你说它是一个网站,但看起来你正在制作类似于应用程序的东西,我很想建议使用 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 问题似乎有点开销,但可能值得考虑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2011-08-26
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多