这只发生在设备上,而不是模拟器中。我可以得到第一个警报,这让我相信它不是一个HTML问题(当然非常容易纠正......)。在weinre调试器中,我尝试复制并粘贴$(document).on函数,但它说$(document)为null。昨天晚上工作正常,直到我不小心用libre office而不是notepad ++打开文件。 Notepad ++将换行符显示为CR CF
,这可能与它有关吗?
编辑:我将index.html的内容复制到记事本文件并将其保存为html,以便删除任何隐藏的格式。我还添加了jQuery作为index.html中的第一个脚本。
最后,如果我查看weinre调试器中的元素,我可以看到index.html。
jQuery(文档)给了我ReferenceError: jQuery is not defined
所以jquery似乎有些错误...
<script type="text/javascript" src="js/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="cordova.js"></script>
路径正确
回答哼...我的bat脚本打包bin / debug /的内容只打包文件而不是文件夹,所以没有js文件夹进入zip ...
提前感谢您的帮助!
window.PhotoScan = window.PhotoScan || {};
alert("we can get this far");
$(function () {
alert("how do we not get to here???!!!!!");
$(document).on("deviceready", function () {
alert("index #5");
navigator.splashscreen.hide();
if(window.devextremeaddon) {
window.devextremeaddon.setup();
}
$(document).on("backbutton", function () {
DevExpress.processHardwareBackButton();
});
});
function onNavigatingBack(e) {
if (e.isHardwareButton && !PhotoScan.app.canBack()) {
e.cancel = true;
alert("index #6");
exitApp();
}
}
function exitApp() {
switch (DevExpress.devices.real().platform) {
case "android":
navigator.app.exitApp();
break;
case "win8":
window.external.Notify("DevExpress.ExitApp");
break;
}
}
alert("index #7");
PhotoScan.app = new DevExpress.framework.html.HtmlApplication({
namespace: PhotoScan,
layoutSet: DevExpress.framework.html.layoutSets[PhotoScan.config.layoutSet],
navigation: PhotoScan.config.navigation,
commandMapping: PhotoScan.config.commandMapping
});
alert("index #8");
PhotoScan.app.router.register(":view/:id", { view: "home", id: undefined });
PhotoScan.app.on("navigatingBack", onNavigatingBack);
PhotoScan.app.navigate();
});
答案 0 :(得分:1)
不确定您哪里出错了,但通常我只是将我的引导程序代码包装在设备中。因为我通常首先创建一个数据库模式。
document.addEventListener('deviceready', function () {
alert("index #5");
navigator.splashscreen.hide();
if(window.devextremeaddon) {
window.devextremeaddon.setup();
}
$(document).on("backbutton", function () {
DevExpress.processHardwareBackButton();
});
});
// ... your other functions here
如果你想让它们远离全局范围,可以将它们包装在一个自执行函数中:
(function() {
document.addEventListener('deviceready', function () {});
})();
我还没有在cordova应用程序中使用文档,因为我只是在底部加载了js脚本。然后我通过句柄栏模板和javascript加载大部分内容。
修改强>
根据评论,您需要确保每次添加新文件或对cordova项目中的文件进行更改时,都必须重建它:
cordova run ios --device
cordova run android
答案 1 :(得分:0)
@rory,
你写了$(function(){})
这不是一个好办法。如果您的功能失败,无论出于何种原因,您的程序将无法正常工作。
你打算这样做吗?
杰西