如何在phonegap应用程序中处理iphone上缺少的hw后退按钮?

时间:2013-09-12 08:21:29

标签: iphone cordova phonegap-build

我有一个网络应用程序,托管在一个phonegap应用程序中(我使用phonegap构建)

设置很简单,但在这种情况下并不重要。无论如何我都会告诉你,因为有时魔鬼就在细节中,对吧? :)

详情

phonegap应用程序实际上只是一个单一html的最小设置。那个html实际上是一个闪屏 - HTML的背景有一个图像。有一个元刷新标记,设置为将页面重定向到外部URL。我从现在起称它为myurl.com。

myurl.com的网站是使用jquery mobile和angularjs构建的。我使用那个浮动的适配器来处理两个想要在页面加载时操作dom的框架的问题。这是应用程序实际托管的域以及整个应用程序的运行位置。

设置

一个页面包含指向外部页面的链接。该页面有一个javascript引导程序,显示一些奇特的东西。如果您点击该链接 - 您的应用会将您带到该页面。那样太好了!它实际上适用于所有设备。在我的桌面浏览器和Android应用程序上,我只需点击硬件(或浏览器)BACK按钮,然后我就会回到myurl.com上的应用程序。另一方面,Iphone没有后退按钮:(

我的第一次尝试是创建一个目标网页,其中包含一个后退按钮/链接和一个用于托管花哨页面的iframe。它适用于桌面和Android,即使我在控制台中遇到一些异常/错误。它不会加载到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 build承诺包含正确的版本。

它仍然在相同的视图/应用程序中打开页面而无法返回 - 我得到的结果与正常方式打开链接相同。

帮助我{在这里插入jedi名字},你是我唯一的希望!

修改 我发现了这个问题。 phonegap.js文件自动部署在设备上,因此只有第一个index.html(带有元刷新)才能正确链接。 myurl.com上的页面未链接到该文件。我将phonegap.js放在myurl.com上,它正在运行。唯一的问题,每个设备的phonegap.js是不同的 - 这意味着只有我选择的phonegap.js设备正在运行 - 其他设备坏了!

我可以链接到原生应用文件的任何地方吗?我试过file:/// {path} /phonegap.js但它不起作用。我可以看到/猜测每个设备不同的路径,但对于iphone而言 有效负载{name} .app \ www - 它不会从那里加载...我也试过

http://localhost/phonegap.js

但这也不起作用。

有什么想法吗?

最终编辑

我决定回到绘图板并将所有html文件放在设备上。我将在我的ajax api上实现JSONP,这样我就可以让API在myurl.com上运行并仍然可以通过手机访问它。它可能也是制作phonegap应用程序的预期方式 - 我只是更喜欢其他方法......

1 个答案:

答案 0 :(得分:0)

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

  1. 确保您希望使用inappbrowser的每个网页都有<script src="phonegap.js"></script>
  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');,则会在系统浏览器中打开传递的网址。

  4. 最后,您的商品点击如下所示:

    <a href='#' onclick='openURL("http://www.urlyouwant")/>
    
  5. 此外,根据您使用的手机版的版本,stayinwebview会被折旧。

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