2016-11-29 64 views
2

我想知道是否有方法使用JavaScript函數中的本地值(任何類型,字符串,int等)。爲了澄清我的意思:在JavaScript函數中使用本地C#值

我會使用的WebView的InvokeScriptAsync方法如下

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)準備好您的Ajax調用網址: 準備一個合適的路徑爲Ajax調用像'/ my_app應用/ API/getConstABC' 2)獲取在JS側 值準備在JS側的Ajax調用得到這樣的價值: 例如在AngularJS1中: '$ http.get(「/ my_app/api/getConstABC」)。成功(函數(響應){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

哇,這麼簡單嗎?我會在一秒之前給它,讓你知道它是如何去的。 –

+0

好吧,所以我收到了'System.FormatException',其中包含以下附加信息:輸入字符串格式不正確。 任何提示? –

+0

@MrMe由於string.format你需要加倍{和},編輯 –