OC代码如何与HTML内容交互通知

html-css017

OC代码如何与HTML内容交互通知,第1张

javascript

12345678910111213141516171819202122232425            var param = "url=" + $("#url").val()             $.ajax({                   type: "POST",                   url: "targetAction!targetMethod.action",                   data: param,                   dataType: "json",                   success: function(json){                      alert(json)                   },                   error:function(){                       alert("连接超时")                   }             })    

 java

1234567            ServletResponse response = ServletActionContext.getResponse()         response.resetBuffer()         response.setCharacterEncoding("utf-8")         response.getWriter().print(JSONArray.fromObject(data))    

js端需要有个jquery,java端需要有个json-lib,这两个你可以到网上下载

但是如果想将照片共享给那些并没有使用iOS设备的亲朋好友们,确实大部分用户并没有什么好办法。其实,只要我们通过正确的设置,同样可以将我们iPhone中的照片与那些没有使用iOS设备的用户进行共享。使用本文介绍的方法,可以允许非iOS用户查看您共享的照片流,并且整个设置的方法非常简单。原理就是让自己的照片流生成一个特定的链接,分享给亲朋好友们,让他们通过链接查看你共享的照片。1、打开你iPhone或iPad中的照片应用2、点击底部导航选项卡中的“照片流”3、点击你想要共享相册右边的蓝色箭头4、开启选项菜单下面的“公共网站”开关现在开始,你便可以将生成的链接将照片流通过电子邮件、短信、Twitter、Facebook或直接复制粘贴的方式分享给朋友,别人可以直接通过浏览器来访问链接查看共享的照片。要注意的是,这个生成的链接是一个公共网址,任何人都可以直接访问其中的内容,不过这个链接是无法通过谷歌等搜索引擎直接搜索到的。所以,务必要保存好链接地址,不要轻易将它告诉陌生人。

方法/步骤方法一:通过webview的delegate方法-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;在上面这个函数中,通过截取NSURLRequest解析js中传递过来的参数,和网址再根据参数来调用已定义好的方法。但现在我们介绍另外一种方法。方法二:我们用 javascriptCore.framework 这个库。首先在建立一个UIWebView,代码如下:#import "webview.h" #import <JavaScriptCore/JavaScriptCore.h> @implementation webview -(id)initWithFrame:(CGRect)frame { self=[super initWithFrame:frame] if( self ){ self.webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 310, self.bounds.size.width, 300)] self.webview.backgroundColor=[UIColor lightGrayColor] NSString *htmlPath=[[NSBundle mainBundle] resourcePath] htmlPath=[htmlPath stringByAppendingPathComponent:@"html/index.html"] NSURL *localURL=[[NSURL alloc]initFileURLWithPath:htmlPath] [self.webview loadRequest:[NSURLRequest requestWithURL:localURL]] [self addSubview:self.webview] JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"] context[@"log"] = ^() { NSLog(@"+++++++Begin Log+++++++") NSArray *args = [JSContext currentArguments] for (JSValue *jsVal in args) { NSLog(@"%@", jsVal) } JSValue *this = [JSContext currentThis] NSLog(@"this: %@",this) NSLog(@"-------End Log-------") } } return self } @end在上面代码中,我们先引入了javascriptCore.framework这个库,然后webview那一套就不多说了,注意我加载一个静态网页。然后我用JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]获取该UIWebview的javascript执行环境。在该javascript执行环境中,定义一个js函数,注意关键点来了,这个函数的执行体完全是 objective-c代码写的,也就是下面:context[@"jakilllog"] = ^() { NSLog(@"Begin Log") NSArray *args = [JSContext currentArguments] for (JSValue *jsVal in args) { NSLog(@"%@", jsVal) } JSValue *this = [JSContext currentThis] NSLog(@"-------End Log-------") } oc端已经写好了,我们现在进行html部分。看看UIWebView 中所加载的 html及其js代码是如何写的。<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" /> <meta name="description" content=""> <meta name="viewport" content="width=device-widthinitial-scale=1.0"> <script type="text/javascript" src="index.js"></script></head> <button id="hallo" onclick="buttonClick()">点击button</button> </body> </html>上面html定义了一个button,然后引用index.js,点击button的响应函数为buttonClick() 。该函数在index.js中定义,如下 function buttonClick() { jakilllog("hello world") } 注意,jakilllog("hello world") 函数名jakilllog才是我们oc端调用的oc端调用时的代码。context[@"jakilllog"] = ^() { NSLog(@"Begin Log") NSArray *args = [JSContext currentArguments] for (JSValue *jsVal in args) { NSLog(@"%@", jsVal) } JSValue *this = [JSContext currentThis] NSLog(@"-------End Log-------") } 现在的流程是,点击button按钮,响应buttonClick(),去掉用buttonClick()这个方法function buttonClick() { jakilllog("hello world") } 然后执行jakilllog("hello world")并传参“hello world“ 这个函数。这个函数实现在我们oc端,所以调用方法:context[@"jakilllog"] = ^() { NSLog(@"Begin Log") NSArray *args = [JSContext currentArguments] for (JSValue *jsVal in args) { NSLog(@"%@", jsVal) } JSValue *this = [JSContext currentThis] NSLog(@"-------End Log-------") }