我一直在使用英特尔XDK构建小型应用程序。我尝试打开Phonegap条形码扫描仪,但点击启动按钮时没有任何反应。我的目标是扫描QR码并打开包含结果数据的inAppBrowser链接。我安装了Device(cordova-plugin-device)和Barcode Scanner(phonegap-plugin-barcodescanner)插件,并附带了相机和闪存的权限。
这是我的代码:
<script type="text/javascript">
document.addEventListener("deviceready", scanNow, false);
function scanNow() {
cordova.plugins.barcodeScanner.scan(
function (result) {
// alert("We got a barcode\n" +
// "Result: " + result.text + "\n" +
// "Format: " + result.format + "\n" +
// "Cancelled: " + result.cancelled);
window.open("http://www.example.com?qr=" + result.text, '_system', 'location=no');
},
function (error) {
alert("Error: " + error);
});}
</script>
这是启动按钮:
<a role='button' onclick="scanNow();">Scan</a>
编辑:我通过将此链接添加到我的索引页头的虚拟脚本来解决了这个问题。
<script src="cordova.js"></script>
答案 0 :(得分:1)
您无需在scanNow()
事件上调用deviceready
函数,只需要确保在之后 {{1>}之后才会调用deviceready
1}}事件已被触发。由于您正在调试,我会将该行更改为类似......
document.addEventListener("deviceready", alertDeviceReady, false);
...并添加alertDeviceReady()
,为您提供提醒或控制台消息。通常它需要一两秒钟,但在慢速设备上可能需要更长时间,或者如果你有一些需要较长初始化时间的插件。
这将是一个安全问题......
window.open("http://www.example.com?qr=" + result.text, '_system', 'location=no');
...因为你不应该将webview打开到另一个页面(你正在远离你的应用程序在其中运行的内置webview,你没有与网站相关联)。
您可以使用inAppBrowser
在webview上打开备用视图,但我建议您使用明确命名的inAppBrowser
API,并且不要假设它已被别名使用{{ 1}} - 因为他们已经弃用了这种用法,我相信它不再是默认安装中的别名。也就是说,尝试使用......
window.open()
...来代替。
请参阅docs here,其中还将包含有关该插件当前版本的详细信息(可能仅适用于CLI 5+版本),并包含指向github repo的链接以获取更多信息。