• (转)WPF与JS 函数、回调函数调用


    WPF代码:

    namespace WPFJsTest  
    {  
        /// <summary>  
        /// Page1.xaml 的交互逻辑  
        /// </summary>  
        public partial class Page1 : Page  
        {  
            /// <summary>  
            /// JS页面中的JS对象实例,可以访问页面JS中的代码  
            /// </summary>  
            private dynamic scriptObject = null;  
            public Page1()  
            {  
                InitializeComponent();  
      
      
                // Retrieve the script object. The XBAP must be hosted in a frame or  
                // the HostScript object will be null.  
      
      
      
      
                if (!BrowserInteropHelper.IsBrowserHosted)  
                {  
                    MessageBox.Show("不满足与JS调用条件");  
                    return;  
                }  
                ///判断是不是有js  
                scriptObject = BrowserInteropHelper.HostScript;  
                if (scriptObject != null)  
                {  
                    //初始化Html页面中的回调函数的对象,让Html页面中可以调用Wpf内部方法  
                    scriptObject.IniWPFObjectOfHtml(new CallbackClass());  
                }  
            }  
            private void Button_Click(object sender, RoutedEventArgs e)  
            {  
                if (scriptObject != null)  
                    scriptObject.WPFInvokeJS("WPF页面参数");  
            }  
        }  
      
      
        /// <summary>  
        /// 提供给HTML页面JS调用方法的类的实例  
        /// </summary>  
        [ComVisible(true)]  
        public class CallbackClass  
        {  
            /// <summary>  
            /// JS页面调用的方法  
            /// </summary>  
            /// <param name="message"></param>  
            public void MyMethod(string message)  
            {  
                MessageBox.Show("JS调用WPF函数
    参数:" + message);  
            }  
        }  
    }  

    HTML代码:

    <!DOCTYPE html>  
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">  
    <head>  
        <meta charset="utf-8" />  
        <title></title>  
        <meta http-equiv="X-UA-Compatible" content="IE=8" /> <!--不加上这一句,IE9貌似没效果-->  
        <script type="text/javascript">  
            //    调用WPF的JS函数  
            function JSInvokeWPF()  
            {  
                if (wpfObj == null)  
                {  
                    alert("中间对象为空!");  
                }  
                else  
                {  
                    wpfObj.MyMethod("HTML页面参数");  
                }  
            }  
            //    供WPF调用的函数  
            function WPFInvokeJS(parent)  
            {  
                alert("WPF调用JS函数
    参数:" + parent);  
            }  
            //Wpf中可以调用方法的对的实例  
            var wpfObj = null;  
            function IniWPFObjectOfHtml(obj) {  
                wpfObj = obj;  
            }  
      
      
        </script>  
    </head>  
      
      
    <body>  
        <input id="Button1" type="button" value="调用WPF方法" onclick="JSInvokeWPF();">  
        <!--在这个地方将Wpf的应用程序插入到Html的界面中-->  
        <iframe src="WPFJsTest.xbap" frameborder="0" marginheight="0" marginwidth="0" style="height:100%; 100%;"></iframe>  
    </body>  
    </html>  
  • 相关阅读:
    初试 spring web mvc
    读取网络数据缓存在本地 流程图
    servlet 过滤器实现 请求转发(跳转);跨域转发请求;tomcat 环境下。
    C# .net基于Http实现web server(web服务)
    微信公众平台开发
    Linux目录结构及作用
    MySQL事件调度器event的使用
    MySQL触发器trigger的使用
    存储过程的查、改、删
    MySQL游标的简单实践
  • 原文地址:https://www.cnblogs.com/kimiGuo/p/7117914.html
Copyright © 2020-2023  润新知