我刚刚开始使用phonegap。我有一个Java servlet容器的现有应用程序。我编写了一个简单的爬虫程序,它可以提取所有相关的JS和CSS以及图像等等。所以我现在有一个直接的HTML应用程序。它使用requirejs。
我现在正试图通过phonegap进行构建。但是,我遇到了以下问题,可能是一个错误?或者我正在做的事情是错误的。
发生以下情况:
获取文件:///js/step.search-2.0.6-SNAPSHOT.min.js step.2.0.6-SNAPSHOT.min.js:1未捕获错误:脚本错误:搜索 http://requirejs.org/docs/errors.html#scripterror step.2.0.6-SNAPSHOT.min.js:1
获取文件:///js/step.qtip-2.0.6-SNAPSHOT.min.js step.2.0.6-SNAPSHOT.min.js:1未捕获错误:脚本错误:qtip http://requirejs.org/docs/errors.html#scripterror
获取文件:///js/step.quick-lexicon-2.0.6-SNAPSHOT.min.js step.2.0.6-SNAPSHOT.min.js:1未捕获错误:脚本错误: quick_lexicon http://requirejs.org/docs/errors.html#scripterror
这是一个错误吗?
这是我的requirejs config
requirejs.config({
waitSeconds: 15000,
paths : {
sidebar: ["js/step.sidebar-STEP_SERVER_VERSION_TOKEN.min"],
quick_lexicon : ["js/step.quick-lexicon-STEP_SERVER_VERSION_TOKEN.min"],
qtip : ["js/step.qtip-STEP_SERVER_VERSION_TOKEN.min"],
view_help_menu: ["js/step.help-menu-STEP_SERVER_VERSION_TOKEN.min"],
drag: ["js/step.draggabilly-STEP_SERVER_VERSION_TOKEN.min"],
menu_extras: ["js/step.menu_extras-STEP_SERVER_VERSION_TOKEN.min"],
html2canvas: ["js/step.html2canvas-STEP_SERVER_VERSION_TOKEN.min"],
search: ["js/step.search-STEP_SERVER_VERSION_TOKEN.min"]
}
});
我也注意到以下行为:
换句话说,如果我在应用渲染后运行以下代码段,则在与其进行交互之前,它会起作用。与应用程序交互后,它将停止使用与上述相同的错误。
$("head").append('<script src="js/step.2.0.6-SNAPSHOT.min.js" type="script/javascript"></script>')
在头脑中,我注意到requirejs正确地将相对路径而不是绝对路径放到资源中:
<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="sidebar" src="./js/step.sidebar-2.0.6-SNAPSHOT.min.js"></script>
最后,window.location.href由dev控制台提供的URL是:
之前:file:///android_asset/www/index.html“ 之后:file:///?q =版本= ESV | strong = G0018&amp; options = HVNUG
所以我打算发布这个以防其他人发现同样的问题,但是我认为写这个有助于我理解问题的根源。
克里斯
答案 0 :(得分:1)
所以,非常确定根本原因是:使用历史记录URL似乎已将浏览器的位置移动到某个不再相对于android_asset / www / index.html的位置,这反过来会打破任何进一步的加载脚本。
显然,下一个问题是如何解决这个问题 - 我会详细说明。也许标签可能会派上用场。但更好的是,修复URL以确保它保持相对于index.html。这可能是我自己的用例所特有的。