.NET Webbrowser CSS3无法正常工作

时间:2015-04-25 13:47:18

标签: .net css3 webkit webbrowser-control

我在.NET中创建了一个程序来编辑HTML代码并实时查看它,并且它工作得很好,但是有一个问题:因为我使用了WebBrowser控件,所以它不适用于新的CSS,例如,如果我尝试使用border-radius,它就无法工作。

我已经搜索了,我找到了一种方法来通过编辑注册表中的密钥来解决它,但这样它只能在我的计算机上工作,我需要这个程序甚至可以在其他我没有的计算机上运行有权运行注册表。

我想改变控制,我尝试了webkit控件,CSS3似乎有用,但是有一个新问题。

我通过在richtextbox textchanged事件上实时更改HTML来显示页面,因此页面没有真正加载,外部资源作为图像和其他东西不起作用,在WebBrowser中修复了问题通过搜索所有img标签并更改其属性,例如我将“image.png”更改为“file:/// C:\ pathoftheHTMLfile \ image.png”。

在WebBrowser中运行良好,但它在WebKit上不起作用...... 我真的不知道该怎么做......

我很快就会尝试使用Gecko浏览器,但我想知道是否有人对此有所了解:

  • 有没有办法在WebBrowser中使用CSS3而不编辑系统注册表?
  • 为什么更改图像在WebBrowser中有效,但在Webkit Browser中却无效?

感谢您的帮助,我相信您会给我^ _ ^

更新 我发现在WebKitBrowser中图像的更改是正确的,问题是它似乎只能加载来自互联网的图像,而不是本地图像,这似乎是webkit控件的一个已知问题 Opening local files in Webkit .NET

但没有人以一种好的方式回答这个问题......

更新2:我尝试按照Noseratio在评论中说的做法(我的代码是这样)

Private Sub SetBrowserEmulationMode()
        Dim appName As String = System.IO.Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName)
        Using key = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree)
            key.SetValue(appName, getBrowserEmulationMode, RegistryValueKind.DWord)
        End Using
    End Sub
    Private Function getBrowserEmulationMode() As UInt32
        Dim browserVersion As Integer = 7
        Using ieKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Internet Explorer", RegistryKeyPermissionCheck.ReadSubTree, System.Security.AccessControl.RegistryRights.QueryValues)
            Dim version = ieKey.GetValue("svcVersion")
            If version Is Nothing Then
                version = ieKey.GetValue("Version")
                If version Is Nothing Then
                    Throw New ApplicationException("Microsoft Internet Explorer is required!")
                End If
            End If
            Integer.TryParse(version.ToString().Split("."c)(0), browserVersion)
        End Using

        Dim mode As UInt32 = 10000
        Select Case browserVersion
            Case 7
                mode = 7000
                Exit Select
            Case 8
                mode = 8000
                Exit Select
            Case 9
                mode = 9000
                Exit Select
        End Select

        Return mode
    End Function

但是......即使正确创建了密钥,也没有任何改变。 我正在尝试一个简单的页面,如:

<html>
<head>
  <style>
  div{border:1px solid black; height:200px;border-radius:10px;}
  </style>
</head>
<body>
  <div>

  </div>
</body>
</html>

但是边框不是圆形的,即使我保存并用IE打开它也是正确的圆形

更新3:它已经在update2工作,我是一个愚蠢的XD

0 个答案:

没有答案