Xamarin.android 在Xamarin中调用JavaScript函数

Xamarin.android 在Xamarin中调用JavaScript函数,xamarin.android,Xamarin.android,如何在Xamarin中调用JavaScript方法?。我找到了this()的库,但不幸的是,该工具可以在JavaScript中调用C#函数。对于Xamarin.Forms,我找到了一个解决方案您可以在C#中调用html JavaScript函数,如果是,您可以查看: 有index.html,添加在PCL中,将构建操作设置为EmbeeddedResource,有一个函数,名为printMultiplicationTable <html> <body> <script

如何在Xamarin中调用JavaScript方法?。我找到了this()的库,但不幸的是,该工具可以在JavaScript中调用C#函数。对于Xamarin.Forms,我找到了一个解决方案

您可以在C#中调用html JavaScript函数,如果是,您可以查看:

有index.html,添加在PCL中,将构建操作设置为EmbeeddedResource,有一个函数,名为printMultiplicationTable

<html>
<body>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<div id='multiplicationtable'></div>
<script type="text/javascript">
    function printMultiplicationTable(num, stop)
{
var number = parseInt(num);
var stopNumber = parseInt(stop);

$('#multiplicationtable').empty();
for (var index = 1; index <= stopNumber; index++) {
    $('#multiplicationtable').append(number + ' x ' + index + " = " + number * index + '<br/>');
}
}</script>
</body>
</html>
请在资产文件夹中添加html文件,并将BuildAction设置为AndroidAsset

然后C#调用JS中的一个方法并获取回调值

class EvaluateBack : Java.Lang.Object, IValueCallback
{

    public void OnReceiveValue(Object value)
    {

        Toast.MakeText(Android.App.Application.Context,value.ToString(), ToastLength.Short).Show();// you will get the value "100"
    }


}

webview1.EvaluateJavascript("javascript: check();", new EvaluateBack());
这是github的示例,您可以查看:


您可以在C#中调用html JavaScript函数,如果是,您可以查看:

有index.html,添加在PCL中,将构建操作设置为EmbeeddedResource,有一个函数,名为printMultiplicationTable

<html>
<body>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<div id='multiplicationtable'></div>
<script type="text/javascript">
    function printMultiplicationTable(num, stop)
{
var number = parseInt(num);
var stopNumber = parseInt(stop);

$('#multiplicationtable').empty();
for (var index = 1; index <= stopNumber; index++) {
    $('#multiplicationtable').append(number + ' x ' + index + " = " + number * index + '<br/>');
}
}</script>
</body>
</html>
请在资产文件夹中添加html文件,并将BuildAction设置为AndroidAsset

然后C#调用JS中的一个方法并获取回调值

class EvaluateBack : Java.Lang.Object, IValueCallback
{

    public void OnReceiveValue(Object value)
    {

        Toast.MakeText(Android.App.Application.Context,value.ToString(), ToastLength.Short).Show();// you will get the value "100"
    }


}

webview1.EvaluateJavascript("javascript: check();", new EvaluateBack());
这是github的示例,您可以查看:


感谢您的示例,但当我尝试运行您的项目时,我得到了如下结果:[INFO:CONSOLE(1)]“未捕获引用错误:未定义printMultiplicationTable”,来源:(1)03-02 09:38:14.234 i/chromium(13561):当我尝试在真实设备上运行时,未捕获引用错误:$未定义“,资料来源:file:///android_asset/ (13) @kamerle您是否尝试下载我的样本进行测试?因为我在运行我的项目时没有任何问题,所以您可以看到gif。所以,请尝试从github下载我的示例以测试:是的,我正在使用您的sample@Kamerel在我在模拟器上进行测试之前,它工作得很好。如果你想在真实设备上测试,请先确认decive connect internet,然后你就能看到它工作正常。谢谢你的例子,但当我尝试运行你的项目时,我得到了如下信息:[INFO:CONSOLE(1)]“未捕获引用错误:printMultiplicationTable未定义”,来源:(1)03-02 09:38:14.234 i/chromium(13561):当我尝试在真实设备上运行时,我得到了未捕获的引用错误:$未定义”,来源:file:///android_asset/ (13)@Kamerle您是否尝试下载我的样本进行测试?因为我在运行项目时没有任何问题,您可以看到gif。因此,请尝试从github下载我的样本进行测试:是的,我正在使用您的sample@Kamerel在我在模拟器上进行测试之前,它运行良好。如果您想在真实设备上进行测试,请确认decive connect internet首先,你可以看到它工作得很好。