我开发了一个小型网络应用程序,可以在我的浏览器中完美运行(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。
任何人都可以帮我吗?
答案 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;});
}
});
});
}