Javascript Cordova Phonegap条码插件赢得';无法从我的英特尔XDK应用程序启动
我一直在用Intel XDK构建小型应用程序。我试图打开Phonegap条形码扫描仪,但当点击启动按钮时,什么也没发生。我的目标是扫描二维码并打开包含结果数据的应用浏览器链接。我已经安装了设备(cordova插件设备)和条形码扫描仪(phonegap插件条形码扫描仪)插件,并具有照相机和闪光灯的权限 这是我的密码: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
<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}事件发出的重要性。