CefSharp-带多页的JavascriptObjectRepository

CefSharp-带多页的JavascriptObjectRepository,javascript,c#,cefsharp,chromium-embedded,Javascript,C#,Cefsharp,Chromium Embedded,我无法理解ChromiumWebBrowser.JavascriptObjectRepository的错误 我可以使用以下方法注册我的C#对象: chromiumWebBrowser.JavascriptObjectRepository.Register("gui", myObjectIndex, true); chromiumWebBrowser.Address = "index.html"; javascript代码在我的第一页index.html上正常工作: $("mybutton").

我无法理解ChromiumWebBrowser.JavascriptObjectRepository的错误

我可以使用以下方法注册我的C#对象:

chromiumWebBrowser.JavascriptObjectRepository.Register("gui", myObjectIndex, true);
chromiumWebBrowser.Address = "index.html";
javascript代码在我的第一页
index.html
上正常工作:

$("mybutton").on("click", function (event) {
    event.preventDefault();
    gui.onClickButtonChangePage();  // calls MyObjectIndex.OnClickButtonChangePage()
});
但是,当页面更改时,我想将我的对象
myObjectIndex
更改为
MyObjectPage2

我正在努力做到这一点:

chromiumWebBrowser.JavascriptObjectRepository.UnRegister("gui");
chromiumWebBrowser.JavascriptObjectRepository.Register("gui", myObjectPage2, true);
chromiumWebBrowser.Address = "page2.html";
当我按下
page2.html
上的按钮时:

$("mybutton").on("click", function (event) {
    event.preventDefault();
    gui.onClickButtonChangePage();  // calls MyObjectIndex.OnClickButtonChangePage()
});
  • 出错
  • 什么也不做:

我只需要调用以下代码:

$(document).ready(function () {
        CefSharp.DeleteBoundObject("gui");
        CefSharp.RemoveObjectFromCache("gui");
        CefSharp.BindObjectAsync("gui");
});

您是否使用
wait CefSharp.BindObjectAsync('gui','gui')
在javascript中初始化对象?唯一能帮助您的是在CefSettings中添加一个“RemoteDebuggingPort”,然后打开chrome localhost:并检查控制台以查看您遇到的错误。调试愉快。如果您的页面共享同一来源,那么对象将在渲染过程中缓存,您可以使用中的示例3忽略缓存,我应该在何时使用此方法@amaitland因为在
page2.html
上使用此方法没有用处:(解释为什么它没有用处。不要用同一个参数调用
BindObjectAsync
)。
$(document).ready(function () {
        CefSharp.DeleteBoundObject("gui");
        CefSharp.RemoveObjectFromCache("gui");
        CefSharp.BindObjectAsync("gui");
});