1. JavaScript代码中调用C#函数,即前台与后台交互
(1) 引入System.Windows.Browser类库,代码如下
using System.Windows.Browser;
(2) 先在C#某个函数中利用HtmlPage中的RegisterScriptableObject函数注册一个JavaScript的可执行的对象,代码如下
HtmlPage.RegisterScriptableObject("TestScriptObject", this);
(3) 利用ScriptableMember在后台代码中(此处在C#中)声明一个前台JavaScript函数能调用的函数,代码如下
[ScriptableMember]
public void show(string e)
{
//传入参数可以是普通数据类型,如string等,也可以是JavaScript对象ScriptObject
MessageBox.Show("前台代码调用后台代码成功");
}
(4) 在前台JavaScript中调用后台C#函数
function Bt_click() {
var silClient = document.getElementById("silverClient"); //silverClient是在
return;
content.show("开始"); //调用前台与后台交互的show()接口
}
C#中的大概代码如下所示:
using System.Windows.Browser;
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
HtmlPage.RegisterScriptableObject("TestScriptObject", this); //注册对象
}
[ScriptableMember]
public void show(string e)
{
//传入参数可以是普通数据类型,如string等,也可以是JavaScript对象ScriptObject
MessageBox.Show("前台代码调用后台代码成功");
}
}
2. 从C#中调用JavaScript函数,即后台与前台交互
(1) 引入System.Windows.Browser类库
using System.Windows.Browser;
(2) 在前台网页中定义一个JavaScript函数,JavaScript代码如下
function onSilverlightLoad() {
alert("后台调用前台函数:");
}
(3) 在后台的C#代码中调用JavaScript函数,C#代码如下
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
HtmlPage.Window.Invoke("onSilverlightLoad");
}
注意:若JavaScript函数中有参数,如下
(1) 在前台网页中定义一个JavaScript函数,JavaScript代码如下
function onSilverlightLoad(parameter) {
alert("后台调用前台函数:"+parameter);
}
(2) 在后台的C#代码中调用JavaScript函数,C#代码如下
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
HtmlPage.Window.Invoke("onSilverlightLoad","from C# call javascript funcion");
}
调用输出:后台调用前台函数:from C# call javascript funcion