zoukankan      html  css  js  c++  java
  • C# WinForm webBrowser 内嵌网页的按钮的OnClientClick事件的return false 在webBrowser中绑定onclick事件后 失效 的变通解决办法

    本示例主题基于如下情况:
    网页有一按钮
    <asp:Button ID="Button1" OnClientClick="return fnButton1();" runat="server" Text="Button" OnClick="Button1_Click" />
    在正常情况下 下面的代码正常执行
    <script language="javascript" type="text/javascript">
        function fnButton1()
        {
            if(confirm("是否继续执行?"))
            {
                return true;
            }
            else
            {
                return false;
            }           
        }
    </script>
    即confirm框 弹出后 根据用户的选择 可正常的继续执行或停止执行按钮的OnClick后台事件

    但当该网页被WinForm通过webBrowser访问 并给该网页的Button1增加事件后
    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (this.webBrowser1.Document.All["Button1"] != null)
            this.webBrowser1.Document.All["Button1"].DetachEventHandler("onclientclick", new EventHandler(Html_Button1_Click));
    }
    void Html_Button1_Click(object sender, EventArgs e)
    {
        //...
    }
    上面的confirm的选择是与否 都会继续执行后台代码及WinForm中的代码

    经过相关尝试 可变通的通过如下判断来确定是否执行后台代码及WinForm中的代码
    网页中增加多一个javascript函数
    <script language="javascript" type="text/javascript">
        var IsSubmit = false;
        function fnButton1()
        {
            if(confirm("是否继续?"))
            {
                IsSubmit = true;
            }
            else
            {
                IsSubmit = false;
            }       
            return IsSubmit;   
        }
       
        function fnButton1ForWebBrowser()
        {
            return IsSubmit;       
        }
    </script>
    WinForm中增加多一步的相关判断
    void Html_Button1_Click(object sender, EventArgs e)
    {
        object result = this.webBrowser1.Document.InvokeScript("fnButton1ForWebBrowser");
        if (result.ToString().ToLower() == "true")
        {
            MessageBox.Show("执行");
            //...
        }
        else
        {
            MessageBox.Show("不执行");  
            //...        
        }
    }

     

  • 相关阅读:
    实验5
    实验4
    实验3
    《整数计算器》
    《写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示》
    《把一个英语句子中的单词次序颠倒后输出》
    个人简介
    学习《构建之法》的感想
    把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;
    写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”);
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1419785.html
Copyright © 2011-2022 走看看