Javascript調用C#代碼
更新時間:2011年01月17日 23:30:14 作者:
Javascript是一種腳本語言,它可以寄宿在各種不同的宿主中實現強大的功能。
本文介紹的是嵌入在.Net的WebBrowser控件中顯示的HTML文件中的Javascript如何調用C#代碼?,F在在客戶端程序中嵌入網頁的做法已經非常普遍了,例如騰訊的新聞彈出框之類的。
.Net的WebBrowser用的內核應該還是IE的。IE中,window對象有個external屬性,這個屬性提供了一個外部接口??梢詧?zhí)行宿主代碼。要通過這個屬性來調用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,以及設置腳本執(zhí)行的宿主:
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;
}
這樣就好了。
.Net的WebBrowser用的內核應該還是IE的。IE中,window對象有個external屬性,這個屬性提供了一個外部接口??梢詧?zhí)行宿主代碼。要通過這個屬性來調用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,以及設置腳本執(zhí)行的宿主:
復制代碼 代碼如下:
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;
}
這樣就好了。
相關文章
淺談javascript中for in 和 for each in的區(qū)別
兩個的作用都用來遍歷對象,但為什么有了for in語句了還要for each in語句呢,后來看了下for each in開發(fā)的文檔,for each in是作為E4X標準的一部分在javascript 1.6中發(fā)布的,而且它不是ECMAScript標準的一部分2015-04-04javascript動態(tài)創(chuàng)建及刪除元素的方法
這篇文章主要介紹了javascript動態(tài)創(chuàng)建及刪除元素的方法,涉及針對DOM元素操作的技巧,非常具有實用價值,需要的朋友可以參考下2014-12-12