检测Cordova插件是否存在

时间:2013-07-26 00:47:35

标签: cordova phonegap-plugins

有没有办法判断Cordova 2.5.0中是否可以调用特定的Cordova插件? Cordova.exec接收successFunctionfailFunction,但只有在执行本机代码时才会调用failFunction。如果接收功能不存在,有没有办法接收错误或回调?我正在寻找适用于加载到WebView

中的删除URL的解决方案

http://docs.phonegap.com/en/2.5.0/guide_plugin-development_ios_index.md.html

4 个答案:

答案 0 :(得分:13)

对于一个非常简单(和更简洁)的解决方案,您也可以使用此方法:

var plugins = cordova.require("cordova/plugin_list").metadata;

你会得到一个看起来像这样的物体:

{
    'cordova-plugin-network-information': "1.0.0",
    'cordova-plugin-whitelist': "1.0.0"
}

作为任何常规变量,您可以检查它是否已定义:

if (typeof plugins['cordova-plugin-whitelist'] === "undefined")
{
    // This plugin is missing
}

答案 1 :(得分:2)

在尝试访问插件之前,您可以在100 ms内执行setTimeout,并且在插件成功/失败时取消超时。如果超时触发 - 没有安装插件。

答案 2 :(得分:0)

这不是完全安全的,但您应该能够读取config.xml并搜索插件配置以查看插件是否已注册:

var myPluginName = "MyPluginName";
var myPluginExists = false;
$.ajax(
    {
        url: "../config.xml",
        success: 
            function(configXML)
            {
                myPluginExists = (configXML.indexOf(myPluginName) > 0);
            },
        dataType: "text"
});

答案 3 :(得分:0)

要查看特定的Cordova插件是否可用,请使用以下简单解决方案。 下面,我正在检查window.plugins.OneSignal是否未定义。将“ OneSignal”替换为您要检查的插件名称。

if (typeof(window.plugins.OneSignal) !== 'undefined') {
  // do your thing
}