2016-06-18 32 views
3

我在Cordova應用程序中創建了自定義(CDVPlugin)插件。如何從我的自定義CDVPlugin類(Objective C語言)調用JavaScript函數

通過該插件,如果JavaScript文件調用它在CDVPlugin聲明的話,我可以很容易地通過

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

但如何從我的自定義CDVPlugin類調用JavaScript函數發送響應的方法。

回答

1

我找到了答案,如果我們想調用任何JavaScript方法與在CDVCommandDelegate類中聲明,可以用分號寫函數的名稱作爲字符串evalJs稱之爲

在科爾多瓦: 我們可以用evaluateJavaScript方法這樣

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

0

你可以嘗試以下

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

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

CDVPlugin有webViewEngine和web視圖作爲它的屬性,因此,如果您已經從CDVPlugin繼承它可能會工作。對於這個工作,你可能JS需要將已經loaded.I沒有嘗試過自己。

希望它能幫助:)

+0

感謝您的幫助,但我想這樣'的NSString * jsfunctioncall = [NSString的〜應變gWithFormat:@ 「callCustomMethodJs()」]; viewController = [[CDVViewController alloc ] init]; [viewController.webViewEngine evaluateJavaScript:jsfunctioncall completionHandler:nil];' 沒有成功 –

+0

不要創建CDVViewController的對象.CDVPlugin具有屬性webViewEngine和webView.You可以使用該屬性調用.JS需要首先加載才能使用「 evaluateJavaScript「。發佈您的更新代碼問題,即你在哪裏寫這個code.It可能會有所幫助。 – sanman

+0

謝謝你的幫助我找到答案附近的答案只... –

相關問題