您的位置:首页 > 移动开发 > Objective-C

wp8开发基础(2)-webbrowser之js通讯交互(ObjectForScripting,ScriptNotify)

2013-12-19 16:46 435 查看
使用wp8的webbrowser想实现如下功能

1:能用c#调用包含html中的js

2:能用html中的js调用c#中方法

注意:

一开始找WebBrowser的js通讯交互,看到blog

地址:http://blog.csdn.net/zzzzzzzert/article/details/7787481

但在wp8中始终不好使

原来:

普通C#的WebBrowser是:System.Windows.Controls.WebBrowser

是设置:ObjectForScripting

MSDN:http://msdn.microsoft.com/zh-cn/library/system.windows.controls.webbrowser.objectforscripting(v=vs.110).aspx

而wp8的WebBrowser是:Microsoft.Phone.Controls.WebBrowser

是设置:ScriptNotify

MSDN:http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/microsoft.phone.controls.webbrowser.scriptnotify(v=vs.105).aspx

弄明白这个就好办了

步骤如下:

1:能用c#调用包含html中的js

原理:通过InvokeScript方法

MSDN:http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/ff402855(v=vs.105).aspx

1.1:xaml中WebBrowser设置属性:LoadCompleted="webBrowserPanel1_success"



1.2:在方法中



private void webBrowserPanel1_success(object sender, System.Windows.Navigation.NavigationEventArgs e)

{

string[] arrPara = new string[1];

arrPara[0] = "this is form c#";

try

{

webBrowserPanel1.InvokeScript("fun_c",arrPara);

}

catch (Exception ex)

{

Msg("出错:"+ex.Message);

}

}

1.3:在html中script中



function fun_c(args) {

alert(args);

}

加载完成后,就可以显示内容

2:能用html中的js调用c#中方法

原理:通过ScriptNotify方法

1.1:xaml中WebBrowser设置属性:ScriptNotify="webBrowserPanel1_ScriptNotify"



1.2:在方法中



private void webBrowserPanel1_ScriptNotify(object sender, NotifyEventArgs e)

{

String sValue = e.Value;

Debug.WriteLine(sValue);

Msg(sValue);

}

注意:Msg是封装:MessageBox.Show

1.3:在html中



function fun_op_c() {

try {

window.external.notify("需要弹出的警告!");

} catch (e) {

alert("出错"+e.message);

}

}



<input type="button" onclick="fun_op_c()" value="调用c#的内容"><br>

运行点"调用c#的内容",即可弹出,看debug信息,代表通讯交互成功

希望对你有用处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: