在UIWebView中,我们经常遇到网页的JS不满足需求的情况,这时,我们就要在下面的这个delegate中手动注入JS代码:
- (void)webViewDidFinishLoad:(UIWebView*)theWebView
{
[self.webView stringByEvaluatingJavaScriptFromString:@"JS代码"
}
常用的”JS代码”如下:
1、使页面支持缩放
首先需要webView去设置下可以支持缩放
[webView setScalesPageToFit:YES];
如果网页本身就支持缩放,那只要这一句话就够了。否则的话,还要注入JS代码:(这里是初始化为1.0;最小缩放0.5;最大缩放3.0;可根据需求修改)
@"var element = document.createElement('meta'); element.name = \"viewport\"; element.content = \"width=device-width,initial-scale=1.0,minimum-scale=0.5,maximum-scale=3,user-scalable=1\"; var head = document.getElementsByTagName('head')[0]; head.appendChild(element);"
2、禁用用户选择,复制,粘贴
@"document.documentElement.style.webkitUserSelect='none';"
3、禁用长按弹出框
@"document.documentElement.style.webkitTouchCallout='none';"
4、获得UIWebView的标题
@"document.title"
5、获得UIWebView的URL地址
@"document.location.href"
6、通过name(获得/设置)页面元素的value值
@"document.getElementsByName('email')[0].value='hello';"
7、通过id(获得/设置)页面元素的value值
@"document.getElementByIdx_x_x('email').value='hello';"
8、提交表单
@"document.forms[0].submit(); "
9、获得body与body之间的HTML
@"document.body.innerHTML"
10、改变webview尺寸时对应改变web page尺寸(web page需要有对应的处理)
[NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ",(int)webview.frame.size.width]
11、获取webview显示内容的宽高度
@"document.getElementById('content').offsetWidth"
@"document.getElementById('content').offsetHeight;"
12、改变字体大小
@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '150%'"
13、删除所有链接
@"$(document).ready(function () {$(\"a\").removeAttr(\"href\");})"