【发布时间】:2019-07-19 23:21:19
【问题描述】:
我什至在beforeunload中写了从Web应用程序注销的逻辑,如下:
window.addEventListener("beforeunload", function (event) {
//Logout logic
//Calling logout api with values from session
//clearing the session on success
});
它在所有网络浏览器(IE、Mozilla、Chrome)中都可以正常工作,但是在winform 应用程序中的WebBrowser 控件中无法正常工作。
这背后的原因是什么?
PS:javascript 没有任何问题,当我通过调用它来调用同一个脚本时,它可以正常工作:
HtmlElement head = webBrowser4.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = webBrowser4.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
element.text = @"function Logout() {
$.ajax({
url: '/api/Logout',
type: ""GET"",
contentType: ""application/json;charset=utf-8"",
success: function(returnVal) {
},
complete: function() {
sessionStorage.clear();
},
error: function(returnVal) {
}
});
}";
head.AppendChild(scriptEl);
webBrowser4.Document.InvokeScript("Logout");
winform中WebBrowser控件中的beforeunload事件有什么问题?
【问题讨论】:
-
尝试使用
InvokeScript方法,这里有一个线程stackoverflow.com/questions/7322420/… -
如果我以后无法控制注销实现怎么办?
-
如果您希望在表单的关闭事件中处理它,它不会起作用。但是,如果您希望它在导航到另一个地址时可以正常工作,那么它可以正常工作。
-
如果您希望用户在打开应用程序时启动新会话(未登录),您可以禁用缓存和 cookie。看看this example。
-
@RezaAghaei 感谢您的帮助,但由于应用程序要求,这对我不起作用。
标签: javascript c# winforms webbrowser-control web-to-winforms