在 C# webBrowser 控件中调用 Javascript 函数

Posted

技术标签:

【中文标题】在 C# webBrowser 控件中调用 Javascript 函数【英文标题】:Calling a Javascript function in the C# webBrowser control 【发布时间】:2010-11-29 01:33:08 【问题描述】:

我在 C# 中使用 webBrowser 控件加载网页,需要调用一个返回字符串值的 javascript 函数。我得到了使用 InvokeScript 方法的解决方案,我尝试了很多,但一切都失败了。

【问题讨论】:

【参考方案1】:

你能具体说明失败的原因吗?

我下面的示例由一个带有 WebBrowser 和一个按钮的表单组成。

最后称为 y 的对象有句子“我做到了!”。所以对我来说它有效。

public partial class Form1 : Form
    

        public Form1()
        
            InitializeComponent();

            webBrowser1.DocumentText = @"<html><head>
                <script type='text/javascript'>
                    function doIt() 
                        alert('hello again');
                        return 'i did it!';
                    
                </script>
                </head><body>hello!</body></html>";

        

        private void button1_Click(object sender, EventArgs e)
        
            object y = webBrowser1.Document.InvokeScript("doIt");
        
    

【讨论】:

【参考方案2】:

您可以向 js 函数发送参数:

// don't forget this:
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]
public partial class Form1 : Form

    public Form1()
    
        InitializeComponent();

        webBrowser1.DocumentText = @"<html><head>
            <script type='text/javascript'>
                function doIt(myArg, arg2, arg3) 
                    alert('hello again ' + myArg);
                    return 'yes '+arg2+' - you did it! thanks to ' +myArg+ ' & ' +arg3;
                
            </script>
            </head><body>hello!</body></html>";

    

    private void button1_Click(object sender, EventArgs e)
    
        // get the retrieved object from js into object y
        object y = webBrowser1.Document.InvokeScript("doIt", new string[]  "Snir", "Raki", "Gidon");
    

【讨论】:

以上是关于在 C# webBrowser 控件中调用 Javascript 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中由 .NET WebBrowser 控件托管的页面中调用 JavaScript 方法并将参数传递给 JavaScript 方法? [复制]

C# WPF WebBrowser控件调用Refresh()函数出现异常,导致程序“未响应”并无法继续运行

c# WebBrowser 控件滚动条

C# webbrowser控件是不是能获取JS加载的数据?

C# WebBrowser 控件拦截从 PHP 脚本在新窗口中下载

在 WebBrowser 控件中调试 HTML