Phonegap index.js没有输入$(function(){})

时间:2015-08-11 14:33:30

标签: javascript cordova phonegap-build

这只发生在设备上,而不是模拟器中。我可以得到第一个警报,这让我相信它不是一个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();
});

2 个答案:

答案 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(){}) 这不是一个好办法。如果您的功能失败,无论出于何种原因,您的程序将无法正常工作。

你打算这样做吗?

杰西