cordova-2.0.0中的window.plugins未定义。

11

我尝试在黑莓设备上使用Cordova的BarcodeScanner插件,但没有成功。示例代码使用了这个结构:

window.plugins.BarcodeScanner...
但是window.pluginsundefined。 我尝试了一个全新的应用程序,window.plugins仍然是undefined(我的意思是没有添加任何内容的示例应用程序)。 API是否已更改且文档已过时,或者我缺少某些东西? 谢谢!

请注意,目前语法非常不同:http://community.phonegap.com/nitobi/topics/_barcodescanner_plugin_upgrading_scanner_javascript_api_code_changes_required - Nux
1
此问题不太可能对任何未来的访问者有所帮助;为什么它有9个投票和7689次浏览? - Spiff
4个回答

8

Cordova 2.0移除了BarcodeScanner插件中使用的"addPlugin"方法。因此,一个快速的修复方法是删除(或注释掉)用于添加插件的"addConstructor"函数,并将其替换为对window对象的显式附加:

//cordova.addConstructor(function() {
//    cordova.addPlugin('barcodeScanner', new BarcodeScanner());
//});

window.barcodeScanner = new BarcodeScanner();

然后,由于没有使用“window.plugins”,您还需要更改调用“scan”方法的代码,因此请替换

window.plugins.barcodeScanner.scan(...

使用

window.barcodeScanner.scan(...

我已经使用Cordova 2.0测试过这个功能,它是可行的。


但是每当我调用 window.barcodeScanner.scan(... 时,有时它会调用我的插件,有时则不会......你能告诉我为什么吗?并且给出了 window.barcodeScanner.scan[undefined]is not a function - Subrat nayak.
需要提供您的代码示例才能帮助诊断问题。 - dogatonic

3

我遇到了同样的问题。在查看window对象后,我发现BarcodeScanner就在那里。 因此,window.BarcodeScanner.prototype.scan(result, error)解决了问题。 请确保等待cordova完全初始化,否则可能会出现has no method exec()之类的错误。


你的意思是直接调用 window.BarcodeScanner 吗? - Ivo
没错,这对我起作用了。如果你 console.log(window),你应该能看到 BarcodeScanner - d2uX
没成功。window.BarcodeScanner 也是 undefined - Ivo
var bcs = new window.BarcodeScanner(); console.log(bcs)返回BarcodeScanner __proto__: Object constructor: function () { encode: function (type, data, successCallback, errorCallback, options) { scan: function (successCallback, errorCallback) { __proto__: Object - d2uX

2

谢谢!有没有什么想法,它何时会适用于黑莓? - Ivo
现在可以在BB上使用了 https://github.com/phonegap/phonegap-plugins/tree/master/BlackBerry/BarcodeScanner - Simon MacDonald
它说最后一次更改是2个月前。也许有一个未决的拉取请求。 - Ivo
抱歉,我在度假。它显示最后一次更改是在13天前,而那正好是我离开之前。 - Simon MacDonald

0

最终,我使用了cordova 1.9.0,因为插件尚未更新。

感谢大家!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接