我有一个 web 应用程序,托管在 phonegap 应用程序中(我为此使用 phonegap 构建)
设置很简单,但在这种情况下并不重要。无论如何,我会告诉你,因为有时魔鬼在细节中,对吧?:)
细节
phonegap 应用程序实际上只是一个 html 的最小设置。该 html 实际上用作启动屏幕 - HTML 的背景有一个图像。有一个元刷新标签,设置为将页面重定向到外部 url。从现在开始,我将其命名为 myurl.com。
myurl.com 上的网站是使用 jquery mobile 和 angularjs 构建的。我使用浮动的适配器来处理两个框架都希望在页面加载时操纵 dom 的问题。这是应用程序真正托管的域,也是整个应用程序运行的地方。
设置
一个页面有一个指向外部页面的链接。该页面有一个 javascript 引导加载,显示一些花哨的东西。如果您单击该链接 - 您的应用程序会将您带到该页面。这太棒了!它实际上适用于所有设备。在我的桌面浏览器和 android 应用程序上,我只需点击硬件(或浏览器)返回按钮,我就会返回 myurl.com 上的应用程序。另一方面,Iphone 没有后退按钮 :(
我的第一次尝试是创建一个登陆页面,它有一个后退按钮/链接和一个 iframe 来托管花哨的页面。即使我在控制台中遇到一些异常/错误,它也可以在桌面和安卓上运行。它不会在 iphone 上加载 - 我只能怀疑安全问题。有人告诉我,我试图用 iframe 做的事情是行不通的,我认为这是真的。
我该如何处理?我实际上尝试过这样的 InAppBrowser:
var ref = window.open(url, 'random_string', 'location=yes');
我检查了我的 config.xml 有这个:
<preference name="stay-in-webview" value="false" />
我还将它添加到我的页面:
<script stype="text/javascript" src="phonegap.js"></script>
省略 phonegap.js 文件,因为 phonegap 构建承诺包含正确的版本。
它仍然在同一个视图/应用程序中打开页面而无法返回 - 我得到的结果与以正常方式打开链接相同。
帮助我{在此处插入绝地名称},你是我唯一的希望!
编辑: 我发现了问题。phonegap.js 文件会自动部署在设备上,因此只有第一个 index.html(带有元刷新)实际链接正确。myurl.com 上的页面未链接到该文件。我将 phonegap.js 放在 myurl.com 上,它正在工作。唯一的问题是,每个设备的 phonegap.js 都不同 - 这意味着只有我从中选择 phonegap.js 的设备在工作 - 其他设备坏了!
我可以在哪里链接到本机应用程序文件?我试过 file:///{path}/phonegap.js 但它不起作用。我可以看到/猜测路径,每个设备都不同,但对于 iphone,它的 Payload{name}.app\www - 它不会从那里加载......我也试过了
http://localhost/phonegap.js
但这也不起作用。
有任何想法吗?
最终编辑
我决定回到绘图板并将所有 html 文件放在设备上。我将在我的 ajax api 上实现 JSONP,这样我就可以让 API 在 myurl.com 上运行,并且仍然可以通过手机访问它。这可能也是制作 phonegap 应用程序的预期方式 - 我只是更喜欢另一种方法......