【发布时间】:2013-09-23 05:07:37
【问题描述】:
我正在构建一个将始终在 iPad 上查看的小型网站,我正在使用元标记:
<meta name="apple-mobile-web-app-capable" content="yes">
并将站点添加到主页以强制 iPad 将其视为应用程序。这消除了地址栏和后退按钮等...
我有一个框架集内的网站,最初该网站将加载一个index.htm 登录页面,其中包含指向包含<frameset> 和<frame> 的其他页面的链接。每个页面都有一个导航框架和一个用于显示内容的框架。第二个框架的内容将是一个外部网页。
我遇到了一个问题,在应用模式下启动网站并单击登录页面中的链接会导致在 safari 中打开一个新窗口 - 本质上它会脱离应用程序上下文并加载 safari,我已解决这与:
<script type="text/javascript">
$(document).ready(function () {
$('a').click(function (e) {
window.location = $(this).attr('href');
e.preventDefault();
});
});
</script>
这使我网站下的所有链接都加载在“应用程序”中。
现在,问题来了。
加载外部网页的框架显然会包含链接,当点击框架中的这些链接时,这会启动 safari 并脱离应用程序上下文,应用程序会恢复到以前的行为。
有没有办法确保网站上的所有链接在“应用”中打开,即使是包含在<frame> 元素中的链接?
这里的总体目标是防止用户跳出应用程序并在网上做他们喜欢做的任何事情
【问题讨论】:
-
我知道这不是您问题的直接答案,但是如果您试图阻止用户退出应用程序,那么是什么阻止他们简单地点击主页按钮并转到Safari 从那里访问互联网?
-
@Nick iPad 将包含在一个展示柜中 - 它会覆盖主页按钮
-
如果 iPad 将专门用于此目的,您不能简单地卸载 Safari 吗?
-
@Tip_Top 这与我已经拥有的防止锚打开 safari 的修复方法类似。不幸的是,它不会阻止框架内加载的链接使用默认行为。
-
@DGibbs 您仍然可以使用 ajax 加载 html 文件内容。不需要服务器端语言。您可以将
div设为目标。每次点击链接时,都会在 div 中加载新的 html。 Safari 不需要使用该方法打开任何其他选项卡。
标签: javascript html ipad frame frameset