我一直在使用英特尔 XDK 构建小型应用程序。我尝试打开 Phonegap 条形码扫描仪,但单击启动按钮时没有任何反应。我的目标是扫描二维码并打开包含结果数据的 inAppBrowser 链接。我同时安装了设备 (cordova-plugin-device) 和条码扫描器 (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>
最佳答案
您不需要在 deviceready
事件上调用您的 scanNow()
函数,您只需要确保在 之前不会调用它在 deviceready
事件触发后。由于您正在调试,我会将该行更改为...
document.addEventListener("deviceready", alertDeviceReady, false);
...并添加一个 alertDeviceReady()
为您提供警报或控制台消息。通常需要一两秒,但在慢速设备上或者如果您有一些需要较长初始化时间的插件,则可能需要更长时间。
这将是一个安全问题...
window.open("http://www.example.com?qr=" + result.text, '_system', 'location=no');
...因为您不应该将 webview 打开到另一个页面(您正在离开您的应用程序在其中运行的内置 webview,您没有与网站相关联)。
您可以使用 inAppBrowser
在 webview 之上打开另一个 View ,但我建议您使用明确命名的 inAppBrowser
API,并且不要假设它有被别名使用 window.open()
—— 因为他们已经弃用了这种用法,而且我相信,它在默认安装中不再是别名了。也就是说,尝试使用...
cordova.inAppBrowser.open()
...相反。
参见 docs here其中还将包括有关该插件当前版本的详细信息(可能仅适用于 CLI 5+ 版本),并包含指向 github 存储库的链接以获取更多信息。
关于javascript - Cordova Phonegap Barcode 插件无法从我的 Intel XDK 应用程序启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240919/