0

我有一个 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 应用程序的预期方式 - 我只是更喜欢另一种方法......

4

1 回答 1

0

实际上,我前几天刚刚回答了一个这样的问题。你可以在这里找到它。简而言之,见下文:

  1. 确保您<script src="phonegap.js"></script>在每个想要使用 inappbrowser 的页面中都有
  2. 您不需要在 config.xml 中包含插件标记。我很确定他们在 2.5 左右将 inappbrowser 包含在核心构建功能中。
  3. 要在 inappbrowser 中打开链接,请使用以下 javascript:

    function openURL(urlString){
        myURL = encodeURI(urlString);
        window.open(myURL, '_blank');
    }
    

    这将在 inappbrowser 中打开传递的 URL。如果更改window.open(myURL, '_blank');window.open(myURL, '_system');它将在系统浏览器中打开传递的 URL。

  4. 最后,您的项目点击如下所示:

    <a href='#' onclick='openURL("http://www.urlyouwant")/>
    

此外,根据您使用的 phonegap 版本,stayinwebview 会折旧。

***根据您的编辑:不要将 phonegap.js 放在您的项目目录中。当您将其上传到构建时,它将包含在您的项目中。

于 2013-09-12T12:22:58.897 回答