2

我正在尝试开发一个概念证明,我使用 jQuery 将 HTML 内容加载到 div 中。我正在使用 jQuery、jQueryMobile 和 PhoneGap。我有一个带有单个 jQueryMobile 页面的简单 index.html。我想将调用我的服务器的结果(HTML)注入到内容 div 中。我正在 Android 模拟器上对此进行测试。这是我的代码:

function onBodyLoad()
{    
    document.addEventListener("deviceready",onDeviceReady,false); 
}

function onDeviceReady()
{     
    var url = "http://www.myserver.com/content/qwerty";
    $("#applicationContainer").load(url);
}
<body onload = "onBodyLoad();">

<div data-role="page" id="page">
    <div data-role="header">
        <h1>My Content</h1>
    </div>
    <div id="applicationContainer" data-role="content"> 
    </div>
</div>

</body>

这是行不通的。我究竟做错了什么?我可以将我的 android apk 文件加载到模拟器中并打开应用程序,但我无法将 HTML 加载到内容 div 中。我的概念是使用 phonegap 将 html 内容加载到页面中创建 android 和 iphone 移动应用程序。我错过了什么?谢谢你的时间。

4

5 回答 5

1

您的 index.html 也必须在同一台服务器上。这是同源策略。

想一想:如果您可以将每个页面加载到您的网站中,您可以执行以下操作:

$("#container").load("http://facebook.com/messages")。每个网站都可以阅读您的私人信息。这就是为什么您只能访问来自同一域的站点的原因。

有一些解决方法,例如 Yahoo Pipes。

于 2012-04-13T21:08:48.573 回答
1

我偶然发现了本教程,它可能解释了我无法从外部服务器加载内容的原因:

http://samcroft.co.uk/2011/updated-loading-data-in-phonegap-using-jquery-1-5/

在教程快结束时,作者说 PhoneGap 1.x+ 在项目 plist 文件中添加了“ExternalHosts”(他们的示例处理 iOS)。通过此更改,您必须将您从应用程序中访问的服务器列入白名单,因此请确保添加任何域。那么,如何将外部服务器列入 Android PhoneGap 实现的白名单?您认为这解释了为什么我无法在我的简单示例中加载内容吗?谢谢

于 2012-04-16T04:56:26.420 回答
0

您是否将域“www.myserver.com”添加到白名单文件中?

没关系,我想这仅适用于iOS。

您可以在 onDeviceReady 中设置警报以确保调用该代码吗?

于 2012-04-13T21:03:18.500 回答
0
<script type="text/javascript">

$("#page").bind("pageshow",function(){
 //your jquery operation when pageshow event triggered.

 var url = "http://www.myserver.com/content/qwerty";
 $("#applicationContainer").load(url);

});

function onBodyLoad()
{    
    document.addEventListener("deviceready",onDeviceReady,false); 
}

function onDeviceReady()
{     
   //your phonegap operation.

}
</script>
<body onload = "onBodyLoad();">

<div data-role="page" id="page">
    <div data-role="header">
        <h1>My Content</h1>
    </div>
    <div id="applicationContainer" data-role="content"> 
    </div>
</div>

</body>
于 2012-04-14T03:42:17.360 回答
0

我找到了如何将外部服务器列入白名单:

phonegap 1.3.0 中的白名单状态如何?

查找 phonegap.xml(我的是在 res 文件夹中 - ~/res/xml/phonegap.xml)并添加:

这允许所有域。

希望这可以帮助。

于 2012-06-27T12:28:43.683 回答