javascript - Cordova Phonegap Barcode 插件无法从我的 Intel XDK 应用程序启动

标签 javascript cordova cordova-plugins intel-xdk

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

相关文章:

javascript - 单击菜单链接时再次加载页面

javascript - Phonegap android中的背景声音

android - Cordova 安卓模拟器没有运行

javascript - 捕获视频并将其存储在服务器上?

cordova - Angulartics 和谷歌分析

javascript - 字符串替换正则表达式,从 Facebook 内容中删除符号

javascript - 用户输入时自动更正单词

javascript - 单击文本框后,移动页面将移至上方

android - 如何区分来自 Cordova/PhoneGap 或其他(智能手机中的标准浏览器)的访问

ios - Cordova iOS 应用程序首选项插件缓存问题