2016-11-29 2 views
2

Мне было интересно, есть ли способ использовать локальные значения (любые типы, строки, int и т. Д.) В функции JavaScript. Для того, чтобы уточнить, что я имею в виду:Использовать локальные значения C# в функции JavaScript

Я бы с помощью InvokeScriptAsync метода WebView следующего

string invokeScripts = await webView.InvokeScriptAsync("eval", new[] 
{ 
    @"(function() 
    { 
     var x = document.getElementsByName(HERE I WANT MY LOCAL VALUE)[0].tagName; 
     x.setAttribute('value', 'myValue'); 
    })()" 
}); 

Так что потребуется какое-то значение, которое было инициализировано до и поместить его на заполнителе.

Я работаю над проектом Windows Phone 8.1 здесь, а язык - C#.

Есть ли способы достичь этого?

+0

Вы можете использовать Ajax вызовов на сервер, чтобы получить какой-либо нужного значения: Например, вам нужно получить значение Const String '' abc '', которое инициализируется на стороне сервера. 1) Подготовьте свой URL Ajax вызова: Prepare подходящий путь для Ajax вызова, как '/ my_app/API/getConstABC' 2) Получить значение по Js стороне Подготовить вызов Ajax на стороне Js, чтобы получить значение, как : Например, в AngularJS1: '$ http.get ("/my_app/api/getConstABC "). Success (function (response) {var something = response.data;});' – webmaster

ответ

2

Поскольку это простая строка, которую вы можете отформатировать его с помощью variabile, прежде чем отправить его клиенту, как:

string invokeScripts = await webView.InvokeScriptAsync("eval", new[] 
{ 
    String.Format(@"(function() 
    {{ 
     var x = document.getElementsByName('{0}')[0].tagName; 
     x.setAttribute('value', 'myValue'); 
    }})()",HERE I WANT MY LOCAL VALUE) 
}); 

Демо: https://dotnetfiddle.net/F6jam9

+0

Wow, это легко? Я отдам его назад через секунду и дам вам знать, как это получилось. –

+0

Итак, я получил «System.FormatException» с дополнительной информацией: Входная строка не была в правильном формате. Любые подсказки? –

+0

@MrMe из-за string.format вам нужно удвоить {и}, отредактировано –