Xamarin的WebView中是否有一种方法允许我将javascript事件附加到我的html元素并调用C#方法。
我可以使用JavaScriptInterface
在Android中轻松完成此操作<video width="320" height="240" controls="controls" poster='poster.gif'
onclick="window.JSInterface.startVideo('file:///sdcard/test.3gp');"
我将如何在Xamarin中实现这一目标
答案 0 :(得分:1)
创建JavaScript接口类
创建一个C#类,其中包含要从JavaScript调用的方法。 如果您要定位Android API等级17或更高版本,请执行此操作 JavaScript-to-C#接口类必须注释每个 使用
[JavascriptInterface]
和[Export]
的JavaScript可调用方法 如下例所示。如果您要定位Android API 等级16或更早,此接口类必须实现Java.Lang.IRunnable
中解释Java.Lang.Object.
(本文后面的内容):
创建一个派生自
MyJSInterface
的C#类在以下示例中,我们将类命名为JavaScript
并实现 从public class MyJSInterface : Java.Lang.Object { Context context; public MyJSInterface (Context context) { this.context = context; } public void ShowToast () { Toast.MakeText (context, "Hello from C#", ToastLength.Short).Show (); } }
调用toast时显示toast的方法:[Export]
使用
[JavascriptInterface]
和JavascriptInterface
注释要向JavaScript公开的每个方法(请参阅Android API Level 16 and Earlier 有关ShowToast
注释的更多信息,请参阅。在 在下面的示例中,Java.Interop
方法被注释以便它 可以从JavaScript调用。请注意,您必须包括Android.Webkit
和using Java.Interop; using Android.Webkit; ... [Export] [JavascriptInterface] public void ShowToast () { Toast.MakeText(context, "Hello from C#", ToastLength.Short).Show(); }
使用如下所示的语句 例如:[Export]
添加项目引用 Mono.Android.Export (这样您就可以使用
Mono.Android.Export
注释):1.在Visual Studio中,右键单击解决方案资源管理器中的引用,然后选择添加引用 ....在Xamarin Studio中, 右键单击解决方案板中的引用,然后选择编辑 参考强> ....
2.在搜索字段中,输入
bind
。找到后,启用旁边的复选标记,然后点击确定。
参考: