我有一個網頁加載在UIWebView中,並且該頁面的JavaScript函數需要來自本機iOs應用程序,NSString的數據。 Js函數如何訪問本機應用程序中的數據?iOS的原生應用程序和網頁的JavaScript之間的通信javascript
感謝,
lvreiny
我有一個網頁加載在UIWebView中,並且該頁面的JavaScript函數需要來自本機iOs應用程序,NSString的數據。 Js函數如何訪問本機應用程序中的數據?iOS的原生應用程序和網頁的JavaScript之間的通信javascript
感謝,
lvreiny
您可以在Obj-C的UIWebView中執行JavaScript。只需撥打[webView stringByEvaluatingJavaScriptFromString:@"myJavaScript"];
即可。
我能想象這樣的設置:
頁面
<html>
<head>
<script type="text/javascript">
function callmeFromObjC(para1) {
// do something
alert(para1);
}
</script>
</head>
<body>
</body>
</html>
Objective-C的
NSString *myParameter = @"myParameter";
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"callmeFromObjC('%@')", myParameter]];
我們的JavaScript加載自定義URL,您的應用攔截。它可以解析它,準備數據並通過stringByEvaluatingJavaScriptFromString:
傳遞到您的網頁。
[webView loadHTMLString:@"<script src=\"filename.js\"></script>"
baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];
NSString *result = [webView stringByEvaluatingJavaScriptFromString:@"function(parameter)"];
提供反饋到iOS
window.location = customprefix://function/parameter=value
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if ([[URL scheme] isEqualToString:@"customprefix"]) {
// handle function name and paramters
}
}
我還寫了一篇關於如何在iOS中調用和處理不同的JavaScript函數的指南。 http://www.dplusmpage.com/2012/07/20/execute-javascript-on-ios/
藉助WebViewJavaScriptBridge,您可以實現javaScript和iOS之間的雙向通信。
請檢查以下鏈接以查看WebViewJavaScriptBridge。
我用這個橋爲我的iOS和JS之間的通信應用之一,反之亦然。
我創建了一個iOS/JS庫來幫助簡化這個過程 - 也就是說,使用類似的方法在兩個方向上進行通信。您可以點擊此處查看:https://github.com/tcoulter/jockeyjs
示例代碼,這是可在這裏,你可以檢查一下....非常有用
http://ramkulkarni.com/blog/framework-for-interacting-with-embedded-webview-in-ios-application/
謝謝,它的工作原理。有沒有一種方法可以從JavaScript調用iOS的功能? – jAckOdE
你甚至讀過我的回答嗎?我知道它沒有示例代碼,但它對您評論中的問題有答案。 –
實現一個像Johan Kool建議的自定義URL方案,然後像這樣從JS「myapp:// parameter1/parameter2/parameter3」調用你的url來使這個工作你還需要實現方法「 - (BOOL)application:(UIApplication *)應用程序handleOpenURL:(NSURL *)url「在您的應用程序委託。以下是一個完整的教程:http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html –