Вызов функции Javascript в элементе управления C # webBrowser - PullRequest
27 голосов
/ 17 сентября 2009

Я использую элемент управления webBrowser в C # для загрузки веб-страницы и мне нужно вызвать функцию JavaScript, которая возвращает строковое значение. Я получил решение использовать метод InvokeScript , и я много пытался, но все не удалось.

Ответы [ 2 ]

35 голосов
/ 17 сентября 2009

Можете ли вы указать, что не удалось?

Мой образец ниже состоит из формы с веб-браузером и кнопкой.

Объект с именем 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");
        }
    }
5 голосов
/ 08 января 2017

Вы можете отправить аргументы функции 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"});
    }
}
...