У меня есть визуальный базовый код:
Dim jsScript As String = <js><![CDATA[
document.all("q").value = "stack overflow";
document.all("search_button_homepage").click();
]]></js>.Value
browser.ExecuteScriptAsync(jsScriptB)
Это исполняет строку как javascript в браузере Cefsharp. Поэтому я хочу перевести это на С#, и я это делаю:
string jscriptB = <js><![CDATA[
document.all("q").value = "stack overflow";
document.all("search_button_homepage").click();
]]></js>.Value
browser.ExecuteScriptAsync(jsScriptB)
И я получаю целую кучу сообщений об ошибках, таких как:
Ошибка CS0103 Имя "документ" не существует в текущем контексте
Недопустимый термин выражения <<
Может кто-нибудь объяснить, что происходит и как это исправить? Я не могу себе представить, почему простое преобразование строк не работает. Спасибо за ваше время и у вас отличный день.
edit: Итак, теперь у меня есть:
var test = @"< js >< ![CDATA[
document.all(""q"").value = ""stack overflow"";
document.all(""search_button_homepage"").click();
]]></ js >.Value";
browser.ExecuteScriptAsync(test);
Но он не выполняет javascript, как это сделал код vb. Может кто-нибудь объяснить это?
С# не имеет функции VB xml literal, поэтому вам нужно вызвать метод XElement.Parse:
string jsScript = System.Xml.Linq.XElement.Parse("<js><![CDATA[ document.all(\"q\").value = \"stack overflow\"; document.all(\"search_button_homepage\").click(); ]]></js>").Value;
browser.ExecuteScriptAsync(jsScriptB);
@
:var script = @"document.all('q').value =...."
Он также поддерживает разрывы строк ( клавиша ввода). Для двойных кавычек вы должны выйти со второй двойной кавычкой@"there's a ""quote"" here"