CEFSharp RegisterJsObject引用错误

时间:2015-03-11 14:20:11

标签: wpf chromium-embedded cefsharp

我知道这个问题已经被这个库打败了,但是尽管有可用的例子,我很难让Javascript绑定与WPF一起使用。

我正在使用CefSharp.Common 37.0.0 我收到的Javascript错误是:未捕获的ReferenceError:myClass未定义

下面,您将找到一个小代码示例。我觉得这很直接。如果有人需要其他信息,请告诉我。感谢。

这是我的HTML / JS逻辑

<html>
    <head>
        <script type="text/javascript">
            function test(){

                MyClass.myFunc();
            }
        </script>        
    </head>

    <body>
        This is a cat
        <button id='testBtn' onclick="test();" type="button">Meow</button>
    </body>
</html>

C#/ .NET Logic

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace HTML5
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Loaded += MainWindow_Loaded;
        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            webBrowser.Loaded += webBrowser_Loaded;
        }

        void webBrowser_Loaded(object sender, RoutedEventArgs e)
        {
            webBrowser.ShowDevTools();            
            webBrowser.RegisterJsObject("MyClass", new MyClass());            

        }
    }

    public class MyClass
    {
        public void MyFunc()
        {
            Console.WriteLine("");
        }
    }
}

- 编辑只是注意到每次以Aborted状态触发LoadError事件。无论我是使用本地HTML文件还是托管Google.com,都会触发此问题。这可能是问题的一部分吗?

1 个答案:

答案 0 :(得分:1)

  

需要在创建浏览器后直接注册对象,因为还没有动态绑定

https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#3-how-do-you-expose-a-net-class-to-javascript

猜测您的对象注册太晚了。尝试在InitializeComponent之后注册。

有关动态绑定的开放式Feature Request供参考,请参阅https://github.com/cefsharp/CefSharp/issues/602

至于Aborted错误,即使页面正确加载,我也看到了37相当多的错误。它似乎在版本39中消失了(有-pre个版本可用)。