7

有没有办法判断是否可以在 Cordova 2.5.0 中调用特定的 Cordova 插件?Cordova.exec接受 asuccessFunction和 afailFunctionfailFunction仅在本机代码执行时才调用。如果接收函数不存在,有没有办法接收错误或回调?我正在寻找一种适用于加载到 WebView 中的删除 URL 的解决方案

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

4

3 回答 3

14

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

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
}
于 2015-06-03T20:55:23.763 回答
2

您可以在尝试访问插件之前执行 100 毫秒的 setTimeout,并在插件成功/失败时取消超时。如果超时触发 - 插件未安装。

于 2013-08-27T23:30:11.880 回答
0

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

var myPluginName = "MyPluginName";
var myPluginExists = false;
$.ajax(
    {
        url: "../config.xml",
        success: 
            function(configXML)
            {
                myPluginExists = (configXML.indexOf(myPluginName) > 0);
            },
        dataType: "text"
});
于 2013-08-27T17:14:14.943 回答