Javascript Cordova Phonegap条码插件赢得';无法从我的英特尔XDK应用程序启动

Javascript Cordova Phonegap条码插件赢得';无法从我的英特尔XDK应用程序启动,javascript,cordova,cordova-plugins,intel-xdk,Javascript,Cordova,Cordova Plugins,Intel Xdk,我一直在用Intel XDK构建小型应用程序。我试图打开Phonegap条形码扫描仪,但当点击启动按钮时,什么也没发生。我的目标是扫描二维码并打开包含结果数据的应用浏览器链接。我已经安装了设备(cordova插件设备)和条形码扫描仪(phonegap插件条形码扫描仪)插件,并具有照相机和闪光灯的权限 这是我的密码: <script type="text/javascript"> document.addEventListener("deviceread

我一直在用Intel XDK构建小型应用程序。我试图打开Phonegap条形码扫描仪,但当点击启动按钮时,什么也没发生。我的目标是扫描二维码并打开包含结果数据的应用浏览器链接。我已经安装了设备(cordova插件设备)和条形码扫描仪(phonegap插件条形码扫描仪)插件,并具有照相机和闪光灯的权限

这是我的密码:

<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> 

文件。添加的文件列表(“DeviceRady”,scanNow,false);
函数scanNow(){
cordova.plugins.barcodeScanner.scan(
功能(结果){
//警报(“我们得到了一个条形码\n”+
//结果:“+Result.text+”\n+
//格式:“+result.Format+”\n+
//“已取消:“+结果.已取消”);
窗口打开(“http://www.example.com?qr=“+result.text”,“u系统”,“位置=否”);
}, 
函数(错误){
警报(“错误:+错误”);
});}
这是启动按钮:

<a role='button' onclick="scanNow();">Scan</a>
扫描
编辑:我解决了这个问题,将这个链接添加到一个虚拟脚本到我的索引页面头部

<script src="cordova.js"></script>

您不需要在
devicerady
事件上调用
scanNow()
函数,只需确保在触发
devicerady
事件之前不会发生对它的调用。由于您正在调试,我会将该行更改为

document.addEventListener("deviceready", alertDeviceReady, false);
…并添加一个
alertDeviceReady()
,它会向您提供警报或控制台消息。通常需要一两秒钟,但在速度较慢的设备上,或者如果您有需要较长初始化时间的插件,则可能需要更长的时间

这将是一个安全问题

window.open("http://www.example.com?qr=" + result.text, '_system', 'location=no');
…因为您不应将webview打开到另一个页面(您正从运行应用程序的内置webview中导航,您与网站没有关联)

您可以使用
inAppBrowser
在webview顶部打开另一个视图,但我建议您使用名称明确的
inAppBrowser
API,不要假设它已被别名为使用
window.open()
——因为他们不赞成这种用法,我相信,它不再在默认安装中使用别名。也就是说,尝试使用

cordova.inAppBrowser.open()
…相反


请参阅,其中还将包括该插件当前版本的详细信息(可能仅适用于CLI 5+版本),并包含指向github repo的链接以获取更多信息。

感谢您的评论,并指出该链接存在的安全问题。我解决了主要问题,在我的索引页面的头部添加了这个虚拟文件的链接。要使任何Cordova插件正常工作,我绝对需要这个链接,这是一个在构建时创建并添加到应用程序中的神奇脚本。它初始化Cordova框架,并为应用程序中包含的所有Cordova插件调用init函数。这就是生成{{devicerady}}事件的代码,以及在调用任何Cordova插件API之前等待{{devicerady}事件发出的重要性。