zoukankan      html  css  js  c++  java
  • Javascript调用C#代码

    Javascript是一种脚本语言,它可以寄宿在各种不同的宿主中实现强大的功能。本文介绍的是嵌入在.Net的WebBrowser控件中显示的HTML文件中的Javascript如何调用C#代码。现在在客户端程序中嵌入网页的做法已经非常普遍了,例如腾讯的新闻弹出框之类的。

    .Net的WebBrowser用的内核应该还是IE的。IE中,window对象有个external属性,这个属性提供了一个外部接口。可以执行宿主代码。要通过这个属性来调用C#方法,其宿主对象必须是ComVisible的。例如,我们在一个Form上放置一个WebBrowser控件,另外准备一个方法OpenForm供js调用。

    [System.Runtime.InteropServices.ComVisibleAttribute(true)] 
      public partial class Main : KSBiz.UI.KSForm 
      { 
          public Main() 
          { 
              InitializeComponent(); 
          }
    
         //其余略
    
          public  void OpenForm(string s) 
          { 
                BasicInfo.CustomerList f = new StockManage.BasicInfo.CustomerList(); 
                f.Show(); 
                f.MdiParent = this; 
                webBrowser1.Visible = false; 
           }
    }

    再准备一个html文件:

       <body>
       <h1>欢迎使用</h1>
       <a href='#' onclick='window.external.OpenForm("test");' >客户列表</a>
       </body>

    在HTML文件中,就可以通过如上的方法来调用C#的方法。

    在FormLoad事件中,为WebBrowser控件设置url,以及设置脚本执行的宿主:

       
    private void Main_Load(object sender, EventArgs e)
    {
       System.IO.FileInfo file = new System.IO.FileInfo("top.htm");
    
       // WebBrowser控件显示的网页路径
       webBrowser1.Url = new Uri(file.FullName);
       // 将当前类设置为可由脚本访问
       webBrowser1.ObjectForScripting = this;
    }

    这样就好了。

  • 相关阅读:
    Retina屏的移动设备如何实现真正1px的线
    使用Karma、Mocha实现vue单元测试
    ios中非ARC项目中引用ARC文件
    ios中Pldatabase的用法(4)
    ios中Pldatabase的用法(3)
    ios中Pldatabase的用法(2)
    ios中修改数字键盘
    asyncsocket的用法
    ios中Pldatabase的用法
    ios中打包
  • 原文地址:https://www.cnblogs.com/yinzixin/p/1935777.html
Copyright © 2011-2022 走看看