在浏览器中开发时如何处理cordova插件? [英] How to deal with cordova plugin when developing in browser?

查看:123
本文介绍了在浏览器中开发时如何处理cordova插件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个应用程序Ionic,Angular和Cordova,我正在寻找在浏览器中开发时用JavaScript调用Cordova插件的最佳方法。什么是最佳实践?我怎么能让它干?



假设我使用Cordova全球化插件。为了防止在浏览器内部测试时出现任何错误,我必须将代码包装在一个try中,如下所示:

  try {
navigator.globalization.getPreferredLanguage(onSuccess,onError);
}
catch(e){
console.log(e);
}



或者我会测试 navigator.globalization 定义如下:

  if(navigator.globalization){
navigator.globalization.getPreferredLanguage (onSuccess,onError);
}

但是有什么办法我可以避免这样做每次我需要调用

解决方案

cordova.js 仅在您在设备或模拟器中运行应用程序时可用。因此,没有办法在浏览器中使用cordova插件。因为你需要在每个插件调用上添加一个检查 if(navigator.globalization)我会建议你做自己的包装或函数以上这些调用,某种全局函数,将调用这些插件函数。
这是一个简单的javascript示例。

  function MyGlobalizationService(){
}

MyGlobalizationService.prototype.getPreferredLanguage = function(onSuccess,onError){
if(navigator.globalization){
navigator.globalization.getPreferredLanguage(onSuccess,onError);
}
}

window.myGlobalizationService = new MyGlobalizationService();

然后使用 window.myGlobalizationService 在您的应用程序中。


I'm developing an application Ionic, Angular and Cordova and I'm looking for the best way to call Cordova plugins in Javascript while developing in the browser. What is the best practice? And how can I make it DRY?

Let's say I'm using the Cordova globalization plugin. In order to prevent any errors when testing inside a browser, I would have to wrap the code inside a try and catch like this:

try {
   navigator.globalization.getPreferredLanguage(onSuccess, onError);
}
catch (e) {
   console.log(e);
}

Or I would test if navigator.globalization is defined like this:

 if(navigator.globalization) {
     navigator.globalization.getPreferredLanguage(onSuccess, onError);
 }

But is there any way I can avoid doing that every time I need to call a Cordova plugin?

Thanks for your help.

解决方案

As cordova.js is only available when you are running application in device or emulator. So there is no way that you can use cordova plugins in browsers.As you need to put a check if(navigator.globalization) on every plugin call for testing on browsers, so i will suggest you to make your own wrapper or functions above these calls, some sort of global function which will call these plugins functions. Here is a sample with plain javascript.

function MyGlobalizationService(){
};

MyGlobalizationService.prototype.getPreferredLanguage = function(onSuccess, onError){
 if(navigator.globalization) {
     navigator.globalization.getPreferredLanguage(onSuccess, onError);
 }
}

window.myGlobalizationService = new MyGlobalizationService();

And then use window.myGlobalizationService functions anywhere in your application.

这篇关于在浏览器中开发时如何处理cordova插件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆