【问题标题】:problem with beforeunload event in WebBrowser control c# winformWebBrowser控件c#winform中的beforeunload事件问题
【发布时间】: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");

winformWebBrowser控件中的beforeunload事件有什么问题?

【问题讨论】:

  • 尝试使用InvokeScript方法,这里有一个线程stackoverflow.com/questions/7322420/…
  • 如果我以后无法控制注销实现怎么办?
  • 如果您希望在表单的关闭事件中处理它,它不会起作用。但是,如果您希望它在导航到另一个地址时可以正常工作,那么它可以正常工作。
  • 如果您希望用户在打开应用程序时启动新会话(未登录),您可以禁用缓存和 cookie。看看this example
  • @RezaAghaei 感谢您的帮助,但由于应用程序要求,这对我不起作用。

标签: javascript c# winforms webbrowser-control web-to-winforms


【解决方案1】:

你在没有监听器的情况下尝试过吗?

window.onbeforeunload = function(event)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多