Cordova Phonegap Barcode插件无法从我的英特尔XDK应用程序启动

时间:2016-02-06 12:21:37

标签: javascript cordova cordova-plugins intel-xdk

我一直在使用英特尔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>

1 个答案:

答案 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的链接以获取更多信息。