5

我正在尝试使用带有 .NET 4 的 WinForms 中的 OpenWebKitSharp 调用 javascript

这是我尝试使用的代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using WebKit;
using WebKit.Interop;
using WebKit.JSCore;
using webkitForm.Properties;

namespace webkitForm
{
    public partial class Form1 : Form
    {

        WebKitBrowser webKitSharpBrowser = new WebKitBrowser();

        public Form1()
        {
            InitializeComponent();

            this.Controls.Add(webKitSharpBrowser);
            webKitSharpBrowser.Width = 600;
            webKitSharpBrowser.Height = 400;


        }


        private void button1_Click(object sender, EventArgs e)
        {
            webKitSharpBrowser.Preferences.AllowPlugins = true;
            webKitSharpBrowser.UseJavaScript = true;
            webKitSharpBrowser.Navigate("http://sandbox.icontact.com");


            webKitSharpBrowser.GetScriptManager.EvaluateScript("alert('An alert from C#!');"); //Call javascript?

        }

    }
}

我无法让 javascript 触发任何事情……一定有一些我遗漏的东西。

提前致谢。

4

2 回答 2

3

好吧,似乎无法按照您想要的方式完成:

如果您使用的是 .NET 4,则可以使用以下方法调用函数:

<webkitbrowser>.GetScriptManager.CallFunction("name", new Object[] { arg1, arg2, ...}); 

如果您想使用 .NET 2,您可以使用:

<webkitbrowser>.StringByEvaluatingJavaScriptFromString("name(arguments)")

- 打开 Webkit 尖锐问题

于 2013-03-21T17:45:12.620 回答
0

我测试了您的代码,它正在工作,但调用警报函数只会触发一个事件(WebKitBrowser.ShowJavaScriptAlertPanel),您负责处理该事件并显示消息或更新标签或其他任何事情。

例如:

Browser.ShowJavaScriptAlertPanel += Browser_ShowJavaScriptAlertPanel;

然后处理事件:

private void Browser_ShowJavaScriptAlertPanel(object sender, WebKit.ShowJavaScriptAlertPanelEventArgs e)
{
    MessageBox.Show(e.Message);
}
于 2018-10-19T06:35:38.993 回答