c# - 使用 Awesomium 从 YouTube API 在 C# 中捕获 JavaScript 事件

标签 c# javascript wpf youtube-api awesomium

在 Awesomium 中运行时,当 YouTube API 生成时,我能否在 C# 中捕获 JavaScript 事件?

我将以下 HTML 加载到我的 Awesomium 浏览器中:

<body>
    <div id="player"></div>

    <script src="http://www.youtube.com/player_api"></script>
    <script>
        var player;

        function onYouTubePlayerAPIReady() {
            player = new YT.Player('player', {
                height: '390',
                width: '640',
                videoId: '0Bmhjf0rKe8',
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
                }
            });
        }

        function onPlayerReady(event) {
            event.target.playVideo();
        }

        function onPlayerStateChange(event) {
            if (event.data == 0) {
                alert('done');
            }
        }
    </script>
</body>

如何在 C# 中捕获 onPlayerStateChange(或它生成的另一个事件),以便我的应用程序可以在视频结束时使用react?

最佳答案

如果您使用的是 Awesomium.NET 1.7 RC,请执行以下步骤:

  • 创建一个全局 JavaScript 对象。请参阅:CreateGlobalJavascriptObject
  • 向全局 JS 对象添加自定义方法,并绑定(bind)到它。请参阅:JSObject.Bind
  • 从您的 onPlayerStateChange 处理程序中调用自定义方法:

    function onPlayerStateChange(event) {
        if (event.data == 0) {
            myGlobalObject.onPlayerStateChange();
        }
    }
    

(该示例假设您创建了一个名为 myGlobalObject 的全局 JS 对象,并向其添加了一个 onPlayerStateChange 自定义方法。)

这将触发您在 JSObject.Bind 中定义的 JavascriptMethodEventHandler

关于c# - 使用 Awesomium 从 YouTube API 在 C# 中捕获 JavaScript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14594865/

相关文章:

c# - Azure C# 函数中的 Appsettings.json 等效项

javascript - Web Audio API 中的反馈循环

wpf - 在代码隐藏中创建内容控件

c# - 有没有办法在C#中获取extern方法的函数指针

c# - 如何停止 SocketException : "A blocking operation was interrupted by a call to WSACancelBlockingCall" from being thrown?

c# - Serilog 接收器包装器映射,将文件名与内容分开

javascript - 如何防止javascript、Flash的navigateToURL?

javascript - Nativescript WrapLayout在iOS13上有问题吗?

c# - WPF Datagrid 在 header 排序时崩溃

wpf - LINQ to Entities 结合了两个 IQueryable<AnonymousType>