一.解决乱码显示问题
直接加载一段html代码,调用navigatetostring()方法到webview,会显示乱码,解决方法如下:
方案1(不推荐):参考自这里
private static string ConvertExtendedASCII(string HTML) { string retVal = ""; char[] s = HTML.ToCharArray(); foreach (char c in s) { if (Convert.ToInt32(c) > 127) retVal += "&#" + Convert.ToInt32(c) + ";"; else retVal += c; } return retVal; } string html = "我们的内容" webbrowser1.NavigateToString(ConvertExtendedASCII(html));//调用ConvertExtendedASCII()方法即可正确显示。
方案2(推荐):参考自msdn这里:
using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication()) { if (!file.DirectoryExists("temp")) file.CreateDirectory("temp"); using (IsolatedStorageFileStream fs = new IsolatedStorageFileStream("temp\\review.html", FileMode.Create, file)) { string html = "<!DOCTYPE html><html lang='zh-CN'><head><meta name='viewport' content='width=device-width, initial-scale=1.0, user-scalable=no' charset='utf-8' /></head><body>"; html += e.Review.Summary; html += "</body></html>"; byte[] bytes = Encoding.UTF8.GetBytes(html); fs.Write(bytes, 0, bytes.Length); } } this.wb.Navigate(new Uri("temp\\review.html", UriKind.Relative));
注:方案2改了一下<meta>标签里面属性。
二.禁止缩放:
参考自这里
<meta name='viewport' content='width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0' />
三.c#和js交互之改变字体大小
注意:
(1)参数写法,必须分着写,参考自这里
eg: WebBrowser.InvokeScript("ts","body","1");
不能写作: WebBrowser.InvokeScript("ts('body','1')“);
(2)改变字体。
方案1(不推荐):调用js,参考自这里的第二种方法。
<script> var tgs = new Array( 'div','td','tr'); var szs = new Array( 'xx-small','x-small','small','medium','large','x-large','xx-large' ); var startSz = 2; function ts( trgt,inc ) { if (!document.getElementById) return var d = document,cEl = null,sz = startSz,i,j,cTags; sz += inc; if ( sz < 0 ) sz = 0; if ( sz > 6 ) sz = 6; startSz = sz; if ( !( cEl = d.getElementById( trgt ) ) ) cEl = d.getElementsByTagName( trgt )[ 0 ]; cEl.style.fontSize = szs[ sz ]; for ( i = 0 ; i < tgs.length ; i++ ) { cTags = cEl.getElementsByTagName( tgs[ i ] ); for ( j = 0 ; j < cTags.length ; j++ ) cTags[ j ].style.fontSize = szs[ sz ]; } } </script> <style> .tabfont{font-size:12px} </style> <body> <a href="javascript:ts('body',1)">+ 放大字体</a> | <a href="javascript:ts('body',-1)">+ 减小字体</a> 脚本之家 www.jb51.net 这个是设置body中所有的大小设置,不如上面的代码就控制正文的字体大小。大家可以根据自己的需要选用。注意多测试。 </body>
方案2(推荐):css技巧,参考自这里
var fontSize = 1; function zoomIn() { fontSize += 0.1; document.body.style.fontSize = fontSize + "em"; } function zoomOut() { fontSize -= 0.1; document.body.style.fontSize = fontSize + "em"; }
补充:万能eval交互,参考自这里
eg(获取标题):
var x= WBrowser.InvokeScript("eval", new[] { "document.title"}); MessageBox.Show(x.ToString());
四.webbrowser清除缓存
winphone里面没有refresh()方法。但是提供了替代方法:
await WBrowser.ClearInternetCacheAsync();
五.webbrowser跨域问题
参考自这里
在 WebBrowser 控件中,用户不能从 https 页面导航到 http 页面。这不同于设备浏览器,在设备浏览器中用户可以从 https 页面导航到 http 页面。