我知道这个问题已经被这个库打败了,但是尽管有可用的例子,我很难让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,都会触发此问题。这可能是问题的一部分吗?
答案 0 :(得分:1)
需要在创建浏览器后直接注册对象,因为还没有动态绑定
猜测您的对象注册太晚了。尝试在InitializeComponent
之后注册。
有关动态绑定的开放式Feature Request
供参考,请参阅https://github.com/cefsharp/CefSharp/issues/602
至于Aborted
错误,即使页面正确加载,我也看到了37
相当多的错误。它似乎在版本39
中消失了(有-pre
个版本可用)。