天天看点

ios UIWebView截获html并修改便签内容

需求:混合应用uiwebview打开html后,uiwebview有左右滚动条,要去掉左右滚动效果; 

方法:通过js截获uiwebview中的html,然后修改html标签内容; 

实例代码: 

服务器端html

ios UIWebView截获html并修改便签内容

<html><head>  

<meta http-equiv="content-type" content="text/html; charset=utf-8">  

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">   

<title>网曝四川省一考场时钟慢半小时 老师称这就是命</title></head<body>网曝四川省一考场时钟慢半小时 老师称这就是命</body></html>  

这样显示的结果网页的最小宽度会是device-width;但有时候不需要这个宽度,就需要修改width=device-width为width=mywidth; 

客户端代码

ios UIWebView截获html并修改便签内容

- (void)webviewdidfinishload:(uiwebview *)webview  

{     

    //修改服务器页面的meta的值  

    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];  

    [webview stringbyevaluatingjavascriptfromstring:meta];  

}  

这样问题就可以解决了 

新增代码: 

ios UIWebView截获html并修改便签内容

//给网页增加utf-8编码  

 [webview stringbyevaluatingjavascriptfromstring:  

 @"var taghead =document.documentelement.firstchild;"  

  "var tagmeta = document.createelement(\"meta\");"   

  "tagmeta.setattribute(\"http-equiv\", \"content-type\");"   

  "tagmeta.setattribute(\"content\", \"text/html; charset=utf-8\");"   

  "var tagheadadd = taghead.appendchild(tagmeta);"];  

ios UIWebView截获html并修改便签内容

//给网页增加css样式  

    [webview stringbyevaluatingjavascriptfromstring:  

     @"var taghead =document.documentelement.firstchild;"  

     "var tagstyle = document.createelement(\"style\");"   

     "tagstyle.setattribute(\"type\", \"text/css\");"   

     "tagstyle.appendchild(document.createtextnode(\"body{padding: 20pt 15pt}\"));"  

     "var tagheadadd = taghead.appendchild(tagstyle);"];  

ios UIWebView截获html并修改便签内容

//拦截网页图片  并修改图片大小        

[webview stringbyevaluatingjavascriptfromstring:  

 @"var script = document.createelement('script');"   

 "script.type = 'text/javascript';"   

 "script.text = \"function resizeimages() { "   

     "var myimg,oldwidth;"  

     "var maxwidth=380;" //缩放系数   

     "for(i=0;i <document.images.length;i++){"   

         "myimg = document.images[i];"  

         "if(myimg.width > maxwidth){"   

             "oldwidth = myimg.width;"   

             "myimg.width = maxwidth;"   

             "myimg.height = myimg.height * (maxwidth/oldwidth);"   

         "}"   

     "}"   

 "}\";"   

 "document.getelementsbytagname('head')[0].appendchild(script);"];   

[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