在wp8中,可以通过监听WebBrowser控件的ScriptNotify方法,来获取JS对原生的调用。当然JS必须调用特定的方法:window.external.notify.
然后可以通过调用Webbrowser的InvokeScript方法回调JS,这样即实现了双方的通信。
需要注意的细节:
JS调原生只能调用唯一的一个接口。所以需要把调用企图作为参数传递给原生,一般可以通过一个json结构传递。
原生调JS可以指定方法名和参数。但这个方法必须是全局方法,不能是对象方法。比如某个全局JS对象Fuck的方法You,不能通过传递“Fuck.You"作为调用方法名来调用。如果这样调用,会抛出一个80020006错误,这意味着系统找不到对应的JS方法。这点跟Android是有区别的。
总结:不同的移动平台总是喜欢自己实现一套跟web交互的逻辑。这样的话,后端为了某个页面能同时适应不同平台,又要在页面中进行一系列的平台判断。