2013-07-26 14 views
5

Gibt es eine Möglichkeit festzustellen, ob Cordova 2.5.0 ein bestimmtes Cordova-Plugin zum Aufrufen anbietet? Cordova.exec nimmt eine successFunction und eine failFunction aber die failFunction wird nur aufgerufen, wenn der native Code ausgeführt wird. Gibt es eine Möglichkeit, einen Fehler oder einen Rückruf zu erhalten, wenn die Empfangsfunktion nicht existiert? Ich bin auf der Suche nach einer Lösung, die mit einem Entfernen URL arbeitet in WebView geladenErkennen, ob ein Cordova-Plugin existiert

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

+0

Ich weiß, Sie versuchen zu erkennen, ob es existiert, aber können Sie nicht versuchen, fangen und so rt das Gleiche erreichen? Rufen Sie das Plugin im Versuch auf, wenn das Plugin nicht existiert, wird der Code im Catch ausgeführt. –

+0

hierfür müssen Sie ein anderes Plugin entwickeln, das das Vorhandensein eines anderen Plugins überprüft, Sie müssen nur wie PluginChecker aufrufen und sehen, ob das gewünschte Plugin vorhanden ist oder nicht – Ocelot

+0

, welches Sie brauchen das? iOS oder Android? – Ocelot

Antwort

2

können Sie eine setTimeout für 100 ms tun, bevor Sie versuchen das Plugin für den Zugriff auf und auf Erfolg/Misserfolg des Plug-In das Timeout abzubrechen. wenn das Timeout ausgelöst wird - das Plugin ist nicht installiert.

0

Das ist nicht ganz sicher ist, aber Sie sollten config.xml der Lage sein, und die Suche nach der Plugin-Konfiguration zu lesen, um zu sehen wenn der Stecker registriert ist:

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

Entschuldigung, ich glaube nicht, dass ich das früher angegeben habe, aber ich suche nach etwas, das funktionieren würde, wenn JS läuft auf einem Remote-Server und hat keinen Zugriff auf die Dateien im Projekt. – sguha

+0

Nein, Sie haben das angegeben. Ich habe einfach nicht gewürdigt, worauf Sie hinauswollen. Ich nahm an, dass Sie über das JS auf dem Gerät gesprochen haben, denn wenn sich das JS auf dem Server befindet, haben Sie ohnehin keinen Zugriff auf cordova.exec. – Chuck

8

Für eine ganz einfacher (und saubere) Lösung, können Sie auch diese Methode verwenden:

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

Sie werden ein Objekt wie die Suche erhalten:

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

Wie jeder normalen Variable, Sie können dann überprüfen, ob es definiert ist:

Verwandte Themen