【问题标题】:How to deal with cordova plugin when developing in browser?在浏览器中开发时如何处理cordova插件?
【发布时间】:2015-08-24 20:37:48
【问题描述】:

我正在开发一个应用程序 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 插件时都这样做?

感谢您的帮助。

【问题讨论】:

  • 欢迎来到 StackOverFlow!您的问题是关于测试还是使用 cordova 插件?请添加更多详细信息,说明您想从这个问题中得到什么。
  • 谢谢@Blunderfest。我刚刚编辑了我的问题。我希望它更清楚。

标签: javascript cordova cordova-plugins


【解决方案1】:

因为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 函数。

【讨论】:

  • 谢谢。这几乎就是我想要的。而且,我忘了提到我正在使用 Angular,所以我想我基本上可以把它放在一个 Angular 服务中。
  • @PhilippeHuot 很高兴听到这个消息。是的,只需为此提供服务。将答案标记为已接受,如果对您有帮助,请点赞:)
猜你喜欢
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 2017-06-07
  • 2010-10-23
  • 1970-01-01
  • 2018-01-26
  • 2011-04-26
相关资源
最近更新 更多