需求:混合应用uiwebview打开html后,uiwebview有左右滚动条,要去掉左右滚动效果;
方法:通过js截获uiwebview中的html,然后修改html标签内容;
实例代码:
服务器端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;
客户端代码

- (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];
}
这样问题就可以解决了
新增代码:

//给网页增加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);"];

//给网页增加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);"];

//拦截网页图片 并修改图片大小
[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