我有一个正在运行的PhoneGap应用程序,我正在尝试添加QR扫描仪。为此,我正在使用PhoneGap Build的BarcodeScanner插件。我遇到的问题是,扫描完成后,警报会导致应用程序冻结。
相关的JavaScript是
var options=""
options += '<p>'+formData["form"][formPart][1]+'</p>'
options += '<a data-role="button" data-rel="dialog" formPart="'+formPart+'"id="Cap-'+formPart+'">Capture Image</a>'
options += '<p id="Cap-Data"></p>'
$('#formContent').append(options);
$('#Cap-'+formPart).on("tap",function(event){
var scanner = cordova.require("cordova/plugin/BarcodeScanner");
scanner.scan(
function (result) {
var FP = $(this).attr("formPart");
$('#Cap-Data').html(result.text);
alert(result.text);
},
function (error) {
alert("Scanning failed: " + error);
}
);
});
对此的任何帮助将不胜感激。
答案 0 :(得分:4)
问题是像alert
或prompt
这样的函数会完全停止执行,直到它们返回为止。尝试将警报代码放入setTimeout()
但不需要超时,您可以将其设置为0 ms。所以它会立即发生,但不会阻止流动。
setTimeout(function() {
alert(result.text);
}, 0);
This question可能很好地解释了setTimeout(fn, 0)
在这些情况下有何帮助。