WPF Webbrowser Control添加了JavaScript代码,不支持Object.freeze功能

时间:2017-04-19 11:11:00

标签: javascript c# wpf

我在我的WPF应用中将JavaScript代码添加到WebBrowser控件中。在我的JavaScript代码中,我使用函数Object.freeze(),当我运行应用程序时会出现以下错误。

Script error message

带有WebBrowser控件的 .xaml 如下所示。

<Window x:Class="TestWPFApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TestWPFApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <WebBrowser x:Name="ProgressBarWeb" HorizontalAlignment="Left" Height="300" VerticalAlignment="Top" Width="300"/>
    </Grid>
</Window>

我的HTML和JavaScript代码添加了NavigateToString()函数

public MainWindow()
{
   InitializeComponent();
   //Js Code is a extract but the effect is the same
   var html = "<html><head><script>" +
               "var platformtypes = {"Attr1": 0, "Attr2": 1};" +
               "Object.freeze(platformtypes);" +
               "</script></head><body></body></html>"
   ProgressBarWeb.NavigateToString(html);
}

我现在的问题是:

  1. Visual Studio 2017使用哪种解释器来解释JavaScript代码?
  2. 是否有可能更改/更新口译员?
  3. 或者我会错过其他什么吗?

1 个答案:

答案 0 :(得分:0)

我已使用chefsharp解决了这个问题。

.xaml我添加了

<ContentControl x:Name="browserContainer" Height="300" Width="300" Content=""/>

并在我使用的代码中

var html = "<html><head><script>" +
           "var platformtypes = {"Attr1": 0, "Attr2": 1};" +
           "Object.freeze(platformtypes);" +
           "</script></head><body></body></html>";
var base64EncodedHtml = Convert.ToBase64String(Encoding.UTF8.GetBytes(html));
var browser = new ChromiumWebBrowser()
{
   Address = "data:text/html;base64," + base64EncodedHtml,
   RenderProcessMessageHandler = new RenderProcessMessageHandler()
};

browserContainer.Content = browser;