Phonegap中本地文件的引用错误

时间:2015-08-25 22:09:19

标签: javascript cordova phonegap-build

我有问题,看起来好像是在我的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="*"/>

1 个答案:

答案 0 :(得分:1)

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

scan_qr_code(){

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

这里有一个plunker,表示如果您删除额外的{,代码就可以正常运行。好吧...... barcode_app现在显示为未定义,我认为它是scripts/barcode.js文件的一部分,顺便说一句,它也不包含在您的项目结构中。