4

我们正在使用 Phonegap/Cordova 2.3.0 将应用程序部署到 Windows Phone 7。该应用程序使用 Require.js 动态加载所有模块。一个模块称为“路由器”,负责从本地文件中获取静态 html 并将其内容加载到<div>. 这适用于 iPhone、iPad 和 Windows Phone 8。但是在 WP7 中发生了一些奇怪的事情。

示例代码来自router.js

//path that works with WP8
var path = "www/views/";
$.ajax({ url: path + "test3.html" })
                .done(function(html) {
                    alert(html); //result from Windows Phone 8
                }).fail(function(error) {
                    alert(error); //result from Windows Phone 7
                });

在 WP7 上测试时给出的错误是 404 Not Found。

我说“发生了一些奇怪的事情”,因为我可以将上面的确切代码复制到main.js(require.js 入口点),或者index.html它将运行而不会出错。但是当我将该代码放入我的 中时router.js,它会返回错误。

一些观察:

  • router.js与 位于同一文件夹 ( /www/js) 中main.js
  • index.html/www文件夹中。
  • 我已经尝试了所有我能想到的路径组合,希望能偶然发现一个可行的路径组合。/app/www/views, app/www/views, /www/views, www/views, /views, views, 甚至x-wmapp0:/app/www/viewsx-wmapp1:/app/www/views
  • 显然,我提供了一个超级简化的例子。如果您需要更多,请告诉我。
4

2 回答 2

3

以下内容可以帮助您理解问题

1) 通过 File.cs (\templates\standalone\cordovalib\Commands\File.cs).readAsText 方法访问 Cordova WP7 上的本地文件。因此,您可以附加完整的 cordovalib 而不是编译的 dll,并查看 Cordova 尝试在哪里找到该文件。

2) ajax 请求和本地文件之间的转换是在 XHRPatch (cordova-2.3.0.js) 完成的,所以尝试在此处添加 uri 跟踪 (console.log(uri);)

于 2013-01-28T20:24:27.300 回答
0

使用我现在使用的 Cordova 2.7.0(在 Windows Phone 8 上 - 在 WP7 上可能会有所不同!)看起来你只需要参考相对于应用程序根目录的路径(而不是你的www目录!这意味着你必须从...来www/path/to/my/file.js

希望有帮助 - 这让我感到困惑!

于 2013-06-12T19:19:42.440 回答