首页 新闻 会员 周边 捐助

客户端中怎么浏览网页?

0
[已解决问题] 解决于 2014-01-13 08:55

在.net平台上开发客户端,有的业务需要迁入网页,一般的就是用webbrowser插件和第三方的基于.net版的webkit浏览器插件,但是使用webbrowser有一个问题是:它会受用户安装IE浏览器的环境影响,有的网页就不能兼容的问题,使用基于.net版第三方的webkit,有很多bug问题,且很多方法是预留的(意即没实现),根据客户端的运行情况,也是受用户机器环境的影响报各种错误?大家项目中都是怎么做的,有什么好的解决方案吗?求解释

yss小虾米的主页 yss小虾米 | 菜鸟二级 | 园豆:238
提问于:2013-12-09 15:45
< >
分享
最佳答案
0

使用 WebBrowser,网页不兼容的,就把网页改兼容了。

奖励园豆:5
Launcher | 高人七级 |园豆:45050 | 2013-12-09 15:48

网页兼容只是一方面的问题,还有其他的问题比如:不支持html5,网页就需要展示有html5元素的图表、嵌入基于html的flash播放器;有的用户报错缺少文件(缺少.net 类库下的某个dll);有的网页是其他方跳入的,用户只会说网页有问题,在其它浏览器没问题等等...不可能做到全部给它改兼容了

yss小虾米 | 园豆:238 (菜鸟二级) | 2013-12-09 15:53

@yss小虾米: 

不要说嵌入浏览器的兼容问题,就算是不嵌入的浏览器,不也一样有兼容性问题。而要解决兼容性问题,不都得等厂商发布新的内核,然后客户端重新安装一次。你能明白360浏览器和IE的区别吗?能明白 Firefox 和 IE 的区别吗?

http://blog.bingo929.com/html5-ie-enabling-script.html

http://firefoxbrowser.codeplex.com/releases/view/34065

https://developer.mozilla.org/en-US/docs/Gecko/Embedding_Mozilla?redirectlocale=en-US&redirectslug=Embedding_Mozilla

Launcher | 园豆:45050 (高人七级) | 2013-12-09 16:04

@Launcher: 恩恩谢谢你这位大牛,我们解决问题有点急,当时没考虑到现在的问题,也没找到好的解决办法,临时应付一下。你给的办法仔细学习。

yss小虾米 | 园豆:238 (菜鸟二级) | 2013-12-09 16:09
其他回答(2)
0

楼上说的很给力,支持一个.

主要还是解决网页的兼容性

平常心队长 | 园豆:1113 (小虾三级) | 2013-12-09 16:45
0

WebBrowser 控件可以通过运行添加注册表项来强制渲染模式,以下是我最近的一个项目,强制运行IE8标准模式,这样可以兼容XP系统。如果你要求支持html5,也可以使控件运行IE9以上的标准模式,如果用户没有安装相应版本,则提示升级。

using Microsoft.Win32;

private void Form1_Load(object sender, EventArgs e) {
    if (wb.Version.Major < 8) {
        MessageBox.Show("浏览器版本太低,请升级至IE8或以上版本后重试。");
        Application.Exit();
    } else {
        this.RunAsIE8Mode();
    }
    new Thread(new ThreadStart(Page_Load)).Start(); //启用独立线程加载页面            
}

/// <summary>
/// 使网页以IE8模式加载
/// </summary>
private void RunAsIE8Mode() {
    RegistryKey prk = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main\FeatureControl", RegistryKeyPermissionCheck.ReadWriteSubTree);
    RegistryKey rk = prk.OpenSubKey("FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree);
    if (rk == null) {
        rk = prk.CreateSubKey("FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree);
    }
    string exe = Process.GetCurrentProcess().ProcessName + ".exe";
    rk.SetValue(exe, "8888", RegistryValueKind.DWord); //这里的8888则为IE8标准渲染模式,其他模式可以上MSDN搜索
    rk.Close();
}

这样处理之后,网页开发就只需要针对一个兼容模式即可。

飞扬的尘埃 | 园豆:1318 (小虾三级) | 2013-12-11 11:37

谢谢您,这也是一个解决兼容性问题的好办法。(之前看到忘记回复,望见谅)

支持(0) 反对(0) yss小虾米 | 园豆:238 (菜鸟二级) | 2014-01-13 08:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册