CefSharp - 具有多页的 JavascriptObjectRepository
CefSharp - JavascriptObjectRepository with multipages
我无法理解 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
上的按钮时:
- 获取错误
$("mybutton2").on("click", function (event) {
event.preventDefault();
gui.onClickButton2(); // didn't call MyObjectPage2.OnClickButton2() !
});
- 什么都不做:
$("mybutton2").on("click", function (event) {
event.preventDefault();
(async () =>
{
await CefSharp.BindObjectAsync("gui", "gui");
gui.onClickButton2(); // Nothing happens
})();
});
我只需要调用这段代码:
$(document).ready(function () {
CefSharp.DeleteBoundObject("gui");
CefSharp.RemoveObjectFromCache("gui");
CefSharp.BindObjectAsync("gui");
});
我无法理解 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
上的按钮时:
- 获取错误
$("mybutton2").on("click", function (event) {
event.preventDefault();
gui.onClickButton2(); // didn't call MyObjectPage2.OnClickButton2() !
});
- 什么都不做:
$("mybutton2").on("click", function (event) {
event.preventDefault();
(async () =>
{
await CefSharp.BindObjectAsync("gui", "gui");
gui.onClickButton2(); // Nothing happens
})();
});
我只需要调用这段代码:
$(document).ready(function () {
CefSharp.DeleteBoundObject("gui");
CefSharp.RemoveObjectFromCache("gui");
CefSharp.BindObjectAsync("gui");
});