2017-04-19 17 views
0

私はWPFのWebBrowserコントロールにJavaScriptコードを追加しています。 JavaScriptコードでは、Object.freeze()という関数を使用しています。これは、アプリケーションを実行すると、次のエラーが表示されます。 WebBrowserコントロールとWPF WebbrowserコントロールがJavaScriptコードを追加しましたが、Object.freeze関数がサポートされていません

Script error message

マイの.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のコードが

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); 
} 

私の質問は今NavigateToString()機能が追加されます。

  1. どのインタプリタのVisual Studio 2017は、JavaScriptコードを解釈するために使用していますか?
  2. インタープリタを変更/更新する可能性はありますか?
  3. 他に何かお見逃しですか?あなたの助けのための

感謝。

+0

を使用するコードに追加:空白のスクリプトが別のWebページに移動しようとしていることを示しているが。 JavaScript Freezeを実行して文字列を渡したいとします。 – jdweng

答えて

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; 
関連する問題