CefSharp-带多页的JavascriptObjectRepository
我无法理解ChromiumWebBrowser.JavascriptObjectRepository的错误 我可以使用以下方法注册我的C#对象: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.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");
});