首页 > 解决方案 > 可以在 Javascript 端接收主机对象事件吗?

问题描述

我使用 ATL C++ 创建了一个 Com 对象

interface IHostObjectSample2 : IDispatch
{
    [propget, id(2), helpstring("Property.")] HRESULT Property([out, retval] BSTR* stringResult);
    [propput, id(2), helpstring("Property.")] HRESULT Property([in] BSTR stringValue);
};

dispinterface _IHostObjectSample2Events
{
    methods:
        [id(1), helpstring("message")] void Event();
};

coclass HostObjectSample2
{
    [default] interface IHostObjectSample2;
    [default, source] dispinterface _IHostObjectSample2Events;
};

我使用 AddHostObjectToScript 将 Com 对象添加到脚本 m_Webview->AddHostObjectToScript(L"sample", &remoteObjectAsVariant));

我可以从脚本端调用方法/函数

我想_IHostObjectSample2Events::Event在 c++ 端触发事件并在 Javascript 端接收它

就像是 window.chrome.webview.hostObjects.sample.addEventListener("Event", () => { do something });

标签: javascriptcomatlwebview2

解决方案


不幸的是,WebView2 的 AddHostObjectToScript 目前不直接支持事件。您可以将此作为功能请求提交到WebView2Feedback 项目中。


推荐阅读