0

在我的 WebView2 中,我使用 js 文件加载本地 html,一切正常,但是如何在 WebView 中从我的 WinForm 运行脚本?

直到现在我在 VB 中使用 webBrowser,我这样做是这样的:

WebBrowser1.Document.InvokeScript("addProducts", New String() {"{ ""desc"": ""test"", ""qta"": 1, ""prezzo"": 2}"})

现在我正在尝试类似的东西:

private async void prodotto_Click(object sender, EventArgs e)
{
    await webView21.ExecuteScriptAsync("addProducts(\"{ \"desc\": \"test\", \"qta\": 1, \"prezzo\": 2})\"");
}

我什至尝试过:

private void prodotto_Click(object sender, EventArgs e)
{
    AddProduct();
}

async void AddProduct()
{
    await webView21.CoreWebView2.ExecuteScriptAsync("addProducts(\"{ \"desc\": \"test\", \"qta\": 1, \"prezzo\": 2})\"");
}

但是脚本甚至没有达到......

4

1 回答 1

4

您的字符串中有拼写错误,请尝试:

"addProducts({\"desc\":\"test\",\"qta\":1,\"prezzo\":2})"

数据需要编码为 JSON 以嵌入为字符串,最好使用SerializeObject 将对象转换为 JSON,例如:

  dynamic obj = new System.Dynamic.ExpandoObject();
  obj.desc = "test";
  obj.qta = 1;
  obj.prezzo = 2; 

  string  data = JsonConvert.SerializeObject(obj);

  webView21.ExecuteScriptAsync($"addProducts({data})");
于 2021-02-03T10:27:17.713 回答