如何将解析的变量注入脚本字符串?
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.
中的文字字符串
由于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.
中的文字字符串