2013-03-24 2 views
1

Javascript/HTML кодAwesomium - Возвращение Javascript Результат на C#

<script type="text/javascript"> 
function configurator(clicked) { 
return clicked.name; 
} 
</script> 

<a name="link1" href="#" onclick="configurator(this)">Link 1</a> 
<a name="link2" href="#" onclick="configurator(this)">Link 2</a> 

Я хочу вернуть «clicked.name» значение, скажем, «результат» переменной в C#, когда OnClick событие на линии тревоги. Я не знаю, как это сделать. Может кто-то помочь мне ...

Примечание: Я все еще очень новый Awesomium :)

Update:

Я следую методу @JonnyReeves с немного модифицирована:

using (JSObject myGlobalObject = webControl1.CreateGlobalJavascriptObject("myGlobalObject")) 
{ 
    myGlobalObject.Bind("onLinkClicked", true, (sen, eve) => 
    { 
     MessageBox.Show(Convert.ToString(sen)); 
    }); 
} 

, но я получил «Awesomium.Windows.Controls.WebControl», в результате получилось не имя кликнутой ссылки.

+0

[Ajax] (https://developer.mozilla.org/en-US/docs/AJAX). Невозможно просто «вернуть» данные на сервер, но вы можете сделать отдельный запрос и передать данные вместе с ним. –

+0

Я не использую веб-сервер. Я просто использую Awesomium (WebControl) в качестве браузера. Я все еще изучаю, как обмениваться данными между C# и html (Awesomium). – Reyn

+0

Дубликат принятого ответа ...: http://stackoverflow.com/questions/8089912/how-to-return-javascript-results-back-to-c-sharp-with-awesomium?rq=1 –

ответ

0

Возможно, вы использовали метод Awesomium JSObject.bind для вызова метода C# из JavaScript. Типичным подходом было бы выставить глобальный объект JavaScript, который включает все ваши «мостовые» методы (т. Е. Те, которые передают данные между C# и JavaScript).

// Create and acquire a Global Javascript object. 
// These object persist for the lifetime of the web-view. 
using (JSObject myGlobalObject = webView.CreateGlobalJavascriptObject("myGlobalObject")) 
{ 
    // The handler is of type JavascriptMethodEventHandler. Here we define it 
    // using a lambda expression. 
    myGlobalObject.Bind("onLinkClicked", false, (name) => 
    { 
     Debug.Print(String.Format("User clicked: {0}", name)); 
    }); 
} 

Теперь вы можете вызвать этот метод из вашего кода JavaScript:

<script type="text/javascript"> 
    function configurator(clicked) 
    { 
      myGlobalObject.onLinkClicked(clicked.name); 
    } 
</script> 
+0

Я попробовал код, но получил ошибку на «Делегат» Awesomium.Core.JavascriptMethodEventHandler «не принимает 1 аргумент», поэтому я немного изменил код (см. OP). Но я не могу получить имя кликнутой ссылки (). – Reyn

Смежные вопросы