webbrowser问题汇总

 一.解决乱码显示问题

直接加载一段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()方法即可正确显示。
Method 1

方案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));
Method 2

 

注:方案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> 
Method 1

方案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";  
} 
Method 2

补充:万能eval交互,参考自这里

 eg(获取标题):

var x=  WBrowser.InvokeScript("eval", new[] { "document.title"});

MessageBox.Show(x.ToString());
eval函数妙用

 

四.webbrowser清除缓存

winphone里面没有refresh()方法。但是提供了替代方法:

await WBrowser.ClearInternetCacheAsync();

五.webbrowser跨域问题

参考自这里

在 WebBrowser 控件中,用户不能从 https 页面导航到 http 页面。这不同于设备浏览器,在设备浏览器中用户可以从 https 页面导航到 http 页面。 

posted on 2013-06-24 16:13  鸣动我心  阅读(499)  评论(0编辑  收藏  举报