ios json包含html,iOS-利用UIWebView获取的HTML,上传JSON加载本地样式

随着各种各样的需求涌出,混合式开发越来越被使用,所以原生与H5的交互也使用的越来越频繁。

现在有这样的一个需求,分享出来与大家共勉。

新闻详情页面使用的是WebView,数据都是从各个网站爬下来的,所以导致各种样式,用户使用起来非常不爽,所以,前端就写了 一个本地的样式,我们利用webView,根据网络获取的这个html,加载本地的这个统一的样式。

index.html这个是前端写好的样式。

57730a0220fe

index.html

html里面的script:

57730a0220fe

html里面的script

如图所示:截图中明确的给出了JSON样式,以及我们需要调用的JS方法。

接下来看下代码如何实现:

首先我们需要加载这个本地的html

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]];

[self.webView loadRequest:request];

pragma mark - UIWebViewDelegate

- (void)webViewDidFinishLoad:(UIWebView *)webView {

self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

self.jsContext.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {

context.exception = exceptionValue;

NSLog(@"异常信息:%@", exceptionValue);

};

// 这么写是因为前端给的样式,需要我们上传的是JSON格式(在上文中html里面的截图已经说到)

NSMutableDictionary *newsDic = [@{

@"content": @"

为了扎实开展精准扶贫工作,进一步核实贫困户相关信息,准确制定帮扶措施,4月18日,县扶贫办等工作人员在蔬菜村委会工作人员的陪同下开展了对贫困户的走访工作,共走访调研了本村2户贫困户和1户已脱贫户。
根据县扶贫办统一安排,县、镇扶贫办工作人员共走访核实两名贫困户以及一名已脱贫户,在走访活动中,每到一户都和他们面对面亲切交谈,深入了解贫困户生产生活状况、收入来源、人口状况、致贫原因、如何帮扶等相关问题,并对照调查问卷作了详细记录。针对贫困户的需求和愿望,与其共同探讨脱贫致富的办法,制定帮扶措施。
此次走访,让贫困户明白了精准扶贫的政策要求,逐户摸清了贫困原因,根据其实际情况制定帮扶措施,以点带面,使扶贫工作落实到户到人,实现全村全部脱贫的最终目标。让每户群众都树立了脱贫致富的信心,制定了有针对性、可操作性的帮扶对策,确保“精准扶贫”工作有条不紊地进行。(吴昊)

",

@"news_id": @45,

@"news_source": @"大东北农委",

@"news_type": @1,

@"status": @1,

@"title": @"农业部副部长宇玄丶一行调研东北农业面源污染综合防治示范区",

@"title_image": @"http://www.ahny.gov.cn/upload/20170407/170407_1021814.jpg"

} mutableCopy];

NSString *jsonStr = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:newsDic options:kNilOptions error:nil] encoding:NSUTF8StringEncoding];

// 转JSON的过程中,会遇到字符转义方面的问题,很恶心。多亏了看到这篇文章,才得以解决问题

// http://blog.csdn.net/robotech_er/article/details/40260377

jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"];

jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\\n" withString:@"
"];

jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\\\\\""];

// vm._getContent:拿到JS方法,上传jsonStr

NSString *textJS = [NSString stringWithFormat:@"vm._getContent('%@')",jsonStr];

[self.jsContext evaluateScript:textJS];

}

好了,大功告成!

效果如下:

57730a0220fe

加载本地的样式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
获取HTML的高度可以使用JavaScript代码来实现。具体步骤如下: 1. 在iOS项目中创建一个UIWebView对象,并将HTML代码加载到该对象中。 2. 在UIWebView对象的代理方法中,使用JavaScript代码获取HTML的高度。 下面是四种方法,可以根据具体情况选择使用哪种方法: 方法一:使用JavaScript代码获取HTML实际内容的高度 ``` NSString *jsString = @"document.documentElement.scrollHeight"; CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:jsString] floatValue]; ``` 方法二:使用JavaScript代码获取HTML实际内容的高度,并将高度传递给iOS端 ``` NSString *jsString = @"window.webkit.messageHandlers.getHeight.postMessage(document.documentElement.scrollHeight)"; [webView evaluateJavaScript:jsString completionHandler:nil]; ``` 在iOS端,需要实现WKScriptMessageHandler协议的代理方法,从而接收传递过来的高度值。 方法三:使用JavaScript代码获取HTML实际内容的高度,并将高度赋值给HTML的body元素的高度属性 ``` NSString *jsString = @"document.body.style.height = document.documentElement.scrollHeight + 'px'"; [webView evaluateJavaScript:jsString completionHandler:nil]; CGFloat height = webView.scrollView.contentSize.height; ``` 方法四:使用JavaScript代码获取HTML实际内容的高度,并将高度赋值给HTML的body元素的高度属性,同时将高度传递给iOS端 ``` NSString *jsString = @"document.body.style.height = document.documentElement.scrollHeight + 'px';"; jsString = [jsString stringByAppendingString:@"window.webkit.messageHandlers.getHeight.postMessage(document.documentElement.scrollHeight)"]; [webView evaluateJavaScript:jsString completionHandler:nil]; ``` 在iOS端,同样需要实现WKScriptMessageHandler协议的代理方法,从而接收传递过来的高度值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值