Как вставить проанализированные переменные в строку скрипта? - PullRequest
0 голосов
/ 24 марта 2020

Из-за ограничения VB WebBrowser я сейчас использую CefSharp, но возникла проблема. Я не знаком с языком JavaScript, но должен написать код на нем. Цель - заполнить форму и нажать кнопку «Добавить», но для заполнения формы я использую переменные из проанализированного 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

1 Ответ

0 голосов
/ 24 марта 2020

Вы можете вставить значения переменных в литералы XML с помощью <%= someVariable %> - пока это не в разделе 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'; * 101le "productIget ] .click ();

Возможно, вы захотите поместить туда кавычки (как показано, или двойные кавычки, если хотите), чтобы сделать их буквальными строками в JavaScript.


Документация: XML Обзор литералов

...