javascript
iOS: 在Object-C中监听javascript事件( Javascript communicating back with Objective-C code)
在iOS開(kāi)發(fā)之Objective-C與JavaScript交互操作?中我們可以通過(guò)stringByEvaluatingJavaScriptFromString 去實(shí)現(xiàn)在obj-C中獲取到相關(guān)節(jié)點(diǎn)屬性,添加javascript代碼等功能。但是我們?nèi)绾伪O(jiān)聽(tīng)到j(luò)avascript的響應(yīng)事件呢。在MAC OS中有效的API去實(shí)現(xiàn),但iPhone沒(méi)有,但我們有一個(gè)技巧途徑:
大概思路是:在JavaScript事件響應(yīng)時(shí),通過(guò)設(shè)置document.location,這會(huì)引發(fā)webview的一個(gè)delegate方法,從而實(shí)現(xiàn)發(fā)送通知的效果,即達(dá)到監(jiān)聽(tīng)的目的。
1、在javascript與webView之間定一個(gè)協(xié)議約定:
? ? ?myapp:myfunction:myparam1:myparam2
2、在javascript中添加代碼:
document.location = "myapp:" + "myfunction:" + param1 + ":" + param2;3、在webView的delegate方法webView:shouldStartLoadWithRequest:navigationType: ?添加
- (BOOL)webView:(UIWebView *)webView2 shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {NSString *requestString = [[request URL] absoluteString];NSArray *components = [requestString componentsSeparatedByString:@":"];if ([components count] > 1 && [(NSString *)[components objectAtIndex:0] isEqualToString:@"myapp"]) {if([(NSString *)[components objectAtIndex:1] isEqualToString:@"myfunction"]) {NSLog([components objectAtIndex:2]); // param1NSLog([components objectAtIndex:3]); // param2// Call your method in Objective-C method using the above... }return NO;}return YES; // Return YES to make sure regular navigation works as expected. }?
?
check:http://stackoverflow.com/questions/5671742/send-a-notification-from-javascript-in-uiwebview-to-objectivec
http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/mybkn/archive/2012/12/01/2797436.html
總結(jié)
以上是生活随笔為你收集整理的iOS: 在Object-C中监听javascript事件( Javascript communicating back with Objective-C code)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 代码生成那点事
- 下一篇: Spring 管理Bean(获取Bean