在iOS上使用PhoneGap或Cordova加载远程HTML

9
我正在使用Cordova 2.4组件Cleaver和嵌入式视图在我的本地iOS 6应用程序中。到目前为止,我已经成功创建了项目结构,链接了Cordova库,并设置了“Device Ready”反馈的Hello World应用程序。
这很好,但它加载了来自www存储库内部分发的所有html(包括所有js库)。
我真正想做的是:
1- 在我的应用程序中弹出Cleaver组件(它不过是一个嵌入的uiwebview)。容易 - 完成。
2- 从指向我远程服务器上servlet的URL加载一些html内容。我有几个servlet,当然需要能够单独加载每个servlet。
3- 通过cordova javascript libs cordova-2.4.0.js与我的本机应用程序交互(如果它们是本地设备但html是从远程位置加载的,我该如何加载它们)。
我该如何设置这个?
附言:
我更多的是Obj-C而不是Javascript开发人员 :)
2个回答

10

以下是答案。太棒了...

关于PhoneGap和Cordova中动态页面加载的优秀文章

正是我需要的。项目的第二部分是使本地代码能够强制加载外部web服务 - 我通过在Cleaver web视图上调用stringByEvaluatingJavaScriptFromString实现了这一点。

[webview stringByEvaluatingJavaScriptFromString:@“app.loadExternal('www.usatoday.com')] ;是完美运行的代码:)

Viola - 我有了一个Cleaver视图,能够加载外部HTML内容,并实现javascript应用程序和本地容器之间的完全双向通信。


8
在您的index.html文件中,可以像下面这样做(针对第2点):
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
<meta charset="utf-8">
<script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
<script type="text/javascript">
     function onBodyLoad(){     
        document.addEventListener("deviceready", onDeviceReady, false);
     }
     function onDeviceReady(){
         window.location.href = <your_remote_url>
     }
}
</script>

对于第三点,您的远程内容应该导入cordova.js,这样本地与web之间的交互就能正常工作了。


谢谢elio.d,但不完全是我想要的。我有大量的servlet服务需要动态调用,并将它们的内容加载到视图中 - 因此像这样硬编码将无法工作。我也不想在服务器端托管cordova.js。我找到了答案和解决方案。它全部都是通过Ajax进行动态内容加载,使得主机页面和cordova.js保持本地,但是内容div可以按需从服务器加载...效果非常好。 - Moonwalker
2
由于某些原因,它在新窗口中打开而不是在原始应用程序窗口中,有什么想法吗? - Abdessamad Doughri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接