在Phonegap中本地文件引用错误

Reference Error With Local Files In Phonegap

本文关键字:文件 引用 错误 Phonegap      更新时间:2023-09-26

我似乎有问题,使用本地文件与我的phonegap应用程序。我试图得到一个简单的应用程序,并运行扫描二维码,只是显示被扫描的文本。然而,由于某种原因,它不起作用。我可以运行任何JavaScript,只要它在index.html文件中。由于某种原因,每当我尝试从包含的js文件中调用函数时,我都会得到一个引用错误。在此代码中,我得到'ReferenceError: scan_qr_code未定义'和'ReferenceError: onDeviceReady未定义'。这两个函数都来自main.js文件,该文件应该包含在index.html文件中。我下载并检查了apk文件,这些文件被包含在构建中,但由于某种原因不能工作。有人有什么建议吗?我快疯了。看起来这应该是一件相当直截了当的事情。此外,我正在构建的PhoneGap版本为3.7.0

我正在使用PhoneGap构建进行编译,我的文件夹结构设置如下。

/www
  /scripts
    main.js
    jquery-1.11.3.min.js
  /styles
    main.css
  index.html
  config.xml

index . html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="scripts/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="scripts/main.js"></script>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="childbrowser.js"></script>
<script type="text/javascript" src="scripts/barcode.js"></script>
<link href="styles/main.css" rel="stylesheet" />
<title> </title>
<script>
$(function(){
    alert('here');
     try{
        $("#scan_button").click(function(){
            alert('Button Clicked 2');
            try{
                onDeviceReady();
                scan_qr_code();
            }catch(e){
                alert(e);
            }
        });
    }catch(e){
        alert(e);
    }
});
document.addEventListener("deviceready", function(){
     try{
        $("#scan_button").click(function(){
            alert('Button Clicked');
            try{
                scan_qr_code();
            }catch(e){
                alert(e);
            }
        });
        scan_qr_code();
    }catch(e){
        alert(e);
    }
}, false);
</script>
</head>
<body>
<button id="scan_button">Scan QR Code</button>
</body>
</html>

main.js

$(function(){
});
function onDeviceReady(){
   alert('Device Ready Fired');
}
function scan_qr_code(){
    try{    
        alert('Scanning');
        // Scan the QR code
        barcode_app.scan(function(result){
            code = result.text;
            // Just grab the text from the scanned code
            alert(code);
            scan_qr_code(){
        });
    }catch(e){
        alert(e);
    }
}

config . xml

<preference name="phonegap-version"            value="3.7.0" />
<access origin="*"/>

这将是一个非常大胆的猜测,但看起来你的main.js文件有一个额外的{,不应该在那里。

scan_qr_code(){

这可能会破坏你的代码,这就是为什么你在main.js中的函数是未定义的。

这是一个柱塞,显示代码将运行良好,如果你删除额外的{。嗯…barcode_app现在显示为未定义,我认为它是scripts/barcode.js文件的一部分,顺便说一下,不包括在您的项目结构中。