登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Platforms
  3. WINDOWS
  4. UWP
  5. 正文

UWP C#与JavaScript交互笔记

2018-01-16

参考文献

https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.WebView

https://code.msdn.microsoft.com/windowsapps/Universal-Windows-App-bf423aee

https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.webview#Windows_UI_Xaml_Controls_WebView_AddWebAllowedObject_System_String_System_Object_

-

需要些一个小工具,设计到UWP与JavaScript交互问题。经过测试,我选择了UWP的Webview组件。

一、交互方式

1、JS调用UWP C#函数

核心代码:

JavaScript:

                try{
                    $("#text1").text(obj2string(objectTest)); //objectTest是C#类
                    var result = objectTest.getStr("C#"); //objectTest是C#类
                    $("#text2").text(result);
                }catch (err)
                {
                    $("#text2").text(err.message);
                }

C#:

using Windows.Foundation.Metadata;
namespace RuntimeComponent1
{
    //this class must be sealed, and must have attribuite [Windows.Foundation.Metadata.AllowForWeb]
    [AllowForWeb]
    public sealed class AllowFromWebExample
    {
        public string GetStr(string str)
        {
            return "Hello " + str;
        }
    }
}
private void mainWeb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
      this.mainWeb.AddWebAllowedObject("objectTest", new RuntimeComponent1.AllowFromWebExample());
}

 

注意要点:

  • WebView一定要在NavigationStarting时间,使用AddWebAllowedObject绑定交互对象
  • 被JS调用的类,必须使用[AllowForWeb]装饰,且必须是sealed类型。
  • 被JS调用的类必须是一个运行时组件,不能再主项目内,不然不会有用。

2、JS给UWP C#发送消息

比较简单,看上面微软官网链接。

3、UWP C#调用JavaScript函数

核心代码:

C#:

public async System.Threading.Tasks.Task  call()
{
     List<string> arguments = new List<string> { "C# " };
     String result = await mainWeb.InvokeScriptAsync("getJSDate", arguments);
     // bodyHTML.
     TestTest.Text = result.ToString();
}

 

JavaScript:

function getJSDate(obj)
{
      return obj + Date();
}

 

 

 

标签: 暂无
最后更新:2018-01-16

代号山岳

知之为知之 不知为不知

点赞

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号