如何将解析的变量注入脚本字符串?

How to inject parsed variables into Script string?

由于VB WebBrowser 限制我现在使用CefSharp,但遇到了问题。我不熟悉 JavaScript 语言,但必须用它来编写代码。 目标是填写表单并单击 "add" 按钮,但为了填写表单,我使用来自已解析 CSV 的变量。我如何将这些变量注入脚本字符串。有什么想法吗?

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim csv As String = OpenFileDialog1.FileName
    Dim laskut As String() = IO.File.ReadAllLines(csv).ToArray

    For Each line In laskut
        Dim Fields = line.Split(";"c)
        Dim hinta As String = Fields(10)
        Dim maksaja As String = Fields(5)
        Dim laitos As String = Fields(6)
        Dim asiakas As String = Fields(4)
        Dim osoite As String = Fields(7)
        Dim index As String = Fields(8)
        Dim city As String = Fields(9)
        Dim postal As String = index & " " & city
        Dim day As Date = DateTime.ParseExact(Fields(1).Replace("""", ""), "dd.MM.yyyy HH.mm.ss", Globalization.CultureInfo.InvariantCulture)
        Dim pvm = day.ToString("dd.MM.yyyy")

        Dim js As String = <js><![CDATA[document.getElementById("w_invoice_t_new_inv_name1").value = asiakas;
            document.getElementById("w_invoice_t_new_inv_street_address1").value = osoite; 
            document.getElementById("w_invoice_t_new_inv_postal_address").value = postal; 
            document.getElementsById("addProductRow")[0].click();]]></js>.Value

        browser.GetMainFrame.ExecuteJavaScriptAsync(js)
        Next
    End Sub

您可以使用 <%= someVariable %> 将变量值插入 XML 文字中 - 只要它不在 CDATA 部分中,根据我的简短测试。 CDATA 已经不需要隐藏 JavaScript 很长时间了。

        Dim asiakas = "hello"
        Dim osoite = "there"
        Dim postal = "world"

        Dim js = <js>
document.getElementById("w_invoice_t_new_inv_name1").value = '<%= asiakas %>';
document.getElementById("w_invoice_t_new_inv_street_address1").value = '<%= osoite %>'; 
document.getElementById("w_invoice_t_new_inv_postal_address").value = '<%= postal %>'; 
document.getElementsById("addProductRow")[0].click();
</js>.Value

        Console.WriteLine(js)

输出:

document.getElementById("w_invoice_t_new_inv_name1").value = 'hello';
document.getElementById("w_invoice_t_new_inv_street_address1").value = 'there';
document.getElementById("w_invoice_t_new_inv_postal_address").value = 'world';
document.getElementsById("addProductRow")[0].click();

您可能想在其中添加引号(如图所示,或者如果愿意,可以使用双引号),使它们成为 JavaScript.

中的文字字符串

文档:XML Literals Overview