2016-06-18 6 views
3

Ich habe ein benutzerdefiniertes (CDVPlugin) Plugin in Cordova App erstellt.So rufen Sie eine JavaScript-Funktion von meiner benutzerdefinierten CDVPlugin-Klasse (Objective C Language)

Durch dieses Plugin, wenn Javascript-Datei ruft eine Methode, die in CDVPlugin deklariert wird, dann kann ich leicht Reaktion durch

CDVPluginResult *pluginResult = nil; 
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:[NSString stringWithFormat:@"%@",deviceUUIDString]]; 
self.delegateCallbackId=command.callbackId; 
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; 

Aber wie kann man nennt eine Javascript-Funktion aus meiner benutzerdefinierten CDVPlugin Klasse senden.

Antwort

1

ich die Antwort gefunden, wenn wir es ein JavaScript-Methode aufrufen möchten rufen mit evalJs, die in CDVCommandDelegate Klasse deklariert und kann den Namen der Funktion als String mit Semikolon

schreiben

In Cordova: wir evaluateJavaScript Methode wie folgt

[self.commandDelegate evalJs:@"callCustomMethodJs();"];

0

können Sie versuchen,

folgende
NSString * jsfunctioncall = [NSString stringWithFormat:@"yourjsfunctiontobecalled()"]; 

#ifdef __CORDOVA_4_0_0 
    [self.webViewEngine evaluateJavaScript:jsfunctioncall completionHandler:nil]; 
#else 
    [self.webView stringByEvaluatingJavaScriptFromString:jsfunctioncall]; 
#endif 

CDVPlugin hat webViewEngine und WebView als seine Eigenschaften, wenn Sie also von CDVPlugin geerbt haben, wird es wahrscheinlich work.For dies Ihr JS arbeiten muss wohl schon sein loaded.I habe es nicht selbst ausprobiert.

Hoffe, es hilft :)

+0

Vielen Dank für Ihre Hilfe gebrauchen kann, aber ich versuchte, auf diese Weise 'NSString * jsfunctioncall = [NSString strin gWithFormat: @ "callCustomMethodJs()"]; viewController = [[CDVViewController alloc ]] init]; [viewController.webViewEngine evaluateJavaScript: jsfunctioncall completionHandler: nil]; ' ohne Erfolg –

+0

Erstellen Sie kein Objekt von CDVViewController.CDVPlugin hat die Eigenschaft webViewEngine und webView.Sie können diese Eigenschaften aufrufen.JS muss zuerst geladen werden, um zu verwenden" evaluateJavaScript ".Posten Sie Ihren aktualisierten Code in Frage, dh wo haben Sie diesen Code geschrieben. Es könnte hilfreich sein. – sanman

+0

Danke Für Ihre Hilfe habe ich Antwort in der Nähe von nur Ihrer Antwort gefunden ... –

Verwandte Themen