ios UIWebView截获html并修改便签内容以及用js对图片进行缩放

news/2024/7/20 21:54:15 标签: iOS, uiwebview
原文地址:http://blog.csdn.net/yaoqiuxiangcom/article/details/39005039
需求:混合应用UIWebView打开html后,UIWebView有左右滚动条,要去掉左右滚动效果; 

方法:通过js截获UIWebView中的html,然后修改html标签内容; 
实例代码: 
服务器端html
Java代码   收藏代码
  1. <html><head>  
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  3. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">   
  4. <title>网曝四川省一考场时钟慢半小时 老师称这就是命</title></head<body>网曝四川省一考场时钟慢半小时 老师称这就是命</body></html>  

这样显示的结果网页的最小宽度会是device-width;但有时候不需要这个宽度,就需要修改width=device-width为width=myWidth; 
客户端代码
Java代码   收藏代码
  1. - (void)webViewDidFinishLoad:(UIWebView *)webView  
  2. {     
  3.     //修改服务器页面的meta的值  
  4.     NSString *meta = [NSString stringWithFormat:@"document.getElementsByName(\"viewport\")[0].content = \"width=%f, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\"", webView.frame.size.width];  
  5.     [webView stringByEvaluatingJavaScriptFromString:meta];  
  6. }  

这样问题就可以解决了 

新增代码: 

Java代码   收藏代码
  1. //给网页增加utf-8编码  
  2.  [webView stringByEvaluatingJavaScriptFromString:  
  3.  @"var tagHead =document.documentElement.firstChild;"  
  4.   "var tagMeta = document.createElement(\"meta\");"   
  5.   "tagMeta.setAttribute(\"http-equiv\", \"Content-Type\");"   
  6.   "tagMeta.setAttribute(\"content\", \"text/html; charset=utf-8\");"   
  7.   "var tagHeadAdd = tagHead.appendChild(tagMeta);"];  

Java代码   收藏代码
  1. //给网页增加css样式  
  2.     [webView stringByEvaluatingJavaScriptFromString:  
  3.      @"var tagHead =document.documentElement.firstChild;"  
  4.      "var tagStyle = document.createElement(\"style\");"   
  5.      "tagStyle.setAttribute(\"type\", \"text/css\");"   
  6.      "tagStyle.appendChild(document.createTextNode(\"BODY{padding: 20pt 15pt}\"));"  
  7.      "var tagHeadAdd = tagHead.appendChild(tagStyle);"];  


Java代码   收藏代码
  1. //拦截网页图片  并修改图片大小        
  2. [webView stringByEvaluatingJavaScriptFromString:  
  3.  @"var script = document.createElement('script');"   
  4.  "script.type = 'text/javascript';"   
  5.  "script.text = \"function ResizeImages() { "   
  6.      "var myimg,oldwidth;"  
  7.      "var maxwidth=380;" //缩放系数   
  8.      "for(i=0;i <document.images.length;i++){"   
  9.          "myimg = document.images[i];"  
  10.          "if(myimg.width > maxwidth){"   
  11.              "oldwidth = myimg.width;"   
  12.              "myimg.width = maxwidth;"   
  13.              "myimg.height = myimg.height * (maxwidth/oldwidth);"   
  14.          "}"   
  15.      "}"   
  16.  "}\";"   
  17.  "document.getElementsByTagName('head')[0].appendChild(script);"];   
  18.   
  19. [webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];  

其他html属性重载和此方法类似; 
参考网址: 
(stringByEvaluatingJavaScriptFromString的使用方法)http://www.uml.org.cn/mobiledev/201108181.asp   
( iphone 获取UIWebView内Html方法)http://blog.csdn.net/diyagoanyhacker/article/details/6564897 
(IOS UIWebView引用外部CSS样式)http://hi.baidu.com/jwq359699768/item/780879e5c98bfb3e4ddcaf22 
http://blog.csdn.net/xdonx/article/details/6973521


http://www.niftyadmin.cn/n/704711.html

相关文章

day29-多线程

一 什么是线程   在传统操作系统中&#xff0c;每个进程有一个地址空间&#xff0c;而且默认就有一个控制线程 线程顾名思义&#xff0c;就是一条流水线工作的过程&#xff0c;一条流水线必须属于一个车间&#xff0c;一个车间的工作过程是一个进程 车间负责把资源整合到一起…

mac下安装 xampp 无法启动apache

mac下安装 xampp 无法启动apache 转载▼标签&#xff1a; mac xampp apache无法启动 it 1.查看端口是否被占用 sudo lsof -i -n2.用终端运行xampp&#xff0c;查看具体的错误sudo su/Applications/XAMPP/xamppfiles/xampp start多半是这个问题&#xff1a;XAMP…

Docker 之 运行状态监控

Docker搭建微服务自动部署 <架构探险之路>&#xff0c;让我们先来了解下Docker运行中的状态监控和内存控制吧&#xff01; Docker 之 运行状态监控 调整Docker容器内存 查看当前内存占用情况 docker statsCONTAINER ID NAME CPU % …

[译] 编程语言和平台:对一条推特思路的评论

原文地址&#xff1a;Programming Languages and Platforms: an annotated twitter thread原文作者&#xff1a;Steven Sinofsky译文出自&#xff1a;掘金翻译计划本文永久链接&#xff1a;github.com/xitu/gold-m…译者&#xff1a;cf020031308校对者&#xff1a;pmwangyang语…

史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置

史上最佳 MacPhpStormXAMPPXdebug 集成开发和断点调试环境的配置 在上一篇 PHP 系列的文章《PHP 集成开发环境比较》中&#xff0c;我根据自己的亲身体验&#xff0c;非常简略的介绍和对比了几款常用的集成开发环境&#xff0c;就我个人而言&#xff0c;比较推崇 Zend Studio 和…

Xcode8 及iOS10适配问题汇总

原文地址:http://www.cnblogs.com/oc-bowen/p/5916630.html 上点干货&#xff0c;目前得知的一些bug解决汇总&#xff1a; iOS10相册相机闪退bug http://www.jianshu.com/p/5085430b029f iOS 10 因苹果健康导致闪退 crash http://www.jianshu.com/p/545bd1bf5a23 麦克风、多媒…

使用superlance插件增强supervisor的监控能力

supervisor与superlance简介 supervisor是一款用python编写的进程监控、进程守护和进程管理的工具&#xff0c;可以工作在各种UNIX-like的操作系统上&#xff0c;通过简单的配置就可以启动、监控和管理大量的进程&#xff0c;并且可以守护这些进程的运行&#xff0c;同时其还提…

mac OS X El Capitan xcrun: error: invalid active developer path missing xcrun at

Mac OS X EI Capitan升级之后&#xff0c;运行git出现如下错误&#xff1a; <code class"hljs javascript has-numbering" style"display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Sou…