Javascript調(diào)用C#代碼
更新時間:2011年01月17日 23:30:14 作者:
Javascript是一種腳本語言,它可以寄宿在各種不同的宿主中實現(xiàn)強(qiáng)大的功能。
本文介紹的是嵌入在.Net的WebBrowser控件中顯示的HTML文件中的Javascript如何調(diào)用C#代碼?,F(xiàn)在在客戶端程序中嵌入網(wǎng)頁的做法已經(jīng)非常普遍了,例如騰訊的新聞彈出框之類的。
.Net的WebBrowser用的內(nèi)核應(yīng)該還是IE的。IE中,window對象有個external屬性,這個屬性提供了一個外部接口??梢詧?zhí)行宿主代碼。要通過這個屬性來調(diào)用C#方法,其宿主對象必須是ComVisible的。例如,我們在一個Form上放置一個WebBrowser控件,另外準(zhǔn)備一個方法OpenForm供js調(diào)用。
[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;
}
}
再準(zhǔn)備一個html文件:
<body>
<h1>歡迎使用</h1>
<a href='#' onclick='window.external.OpenForm("test");' >客戶列表</a>
</body>
在HTML文件中,就可以通過如上的方法來調(diào)用C#的方法。
在FormLoad事件中,為WebBrowser控件設(shè)置url,以及設(shè)置腳本執(zhí)行的宿主:
private void Main_Load(object sender, EventArgs e)
{
System.IO.FileInfo file = new System.IO.FileInfo("top.htm");
// WebBrowser控件顯示的網(wǎng)頁路徑
webBrowser1.Url = new Uri(file.FullName);
// 將當(dāng)前類設(shè)置為可由腳本訪問
webBrowser1.ObjectForScripting = this;
}
這樣就好了。
.Net的WebBrowser用的內(nèi)核應(yīng)該還是IE的。IE中,window對象有個external屬性,這個屬性提供了一個外部接口??梢詧?zhí)行宿主代碼。要通過這個屬性來調(diào)用C#方法,其宿主對象必須是ComVisible的。例如,我們在一個Form上放置一個WebBrowser控件,另外準(zhǔn)備一個方法OpenForm供js調(diào)用。
復(fù)制代碼 代碼如下:
[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;
}
}
再準(zhǔn)備一個html文件:
復(fù)制代碼 代碼如下:
<body>
<h1>歡迎使用</h1>
<a href='#' onclick='window.external.OpenForm("test");' >客戶列表</a>
</body>
在HTML文件中,就可以通過如上的方法來調(diào)用C#的方法。
在FormLoad事件中,為WebBrowser控件設(shè)置url,以及設(shè)置腳本執(zhí)行的宿主:
復(fù)制代碼 代碼如下:
private void Main_Load(object sender, EventArgs e)
{
System.IO.FileInfo file = new System.IO.FileInfo("top.htm");
// WebBrowser控件顯示的網(wǎng)頁路徑
webBrowser1.Url = new Uri(file.FullName);
// 將當(dāng)前類設(shè)置為可由腳本訪問
webBrowser1.ObjectForScripting = this;
}
這樣就好了。
相關(guān)文章
純js代碼實現(xiàn)未知寬高的元素在指定元素中垂直水平居中顯示
本章節(jié)介紹一下如何實現(xiàn)未知寬高的元素在指定元素下實現(xiàn)垂直水平居中效果,代碼簡單易懂,需要的朋友可以參考下本文2015-09-09
JavaScript可否多線程? 深入理解JavaScript定時機(jī)制
JavaScript的setTimeout與setInterval是兩個很容易欺騙別人感情的方法,因為我們開始常常以為調(diào)用了就會按既定的方式執(zhí)行, 我想不少人都深有同感2012-05-05
Wordpress ThickBox 添加“查看原圖”效果代碼
上一次修改了點擊圖片動作 , 這次添加一個“查看原圖”的鏈接,點擊后將在一個新瀏覽器窗口(或Tab)打開該圖片的原始鏈接地址。2010-12-12
javascript 動態(tài)創(chuàng)建表格的2種方法總結(jié)
本文給大家總結(jié)了2種使用javascript動態(tài)創(chuàng)建表格的方法,非常簡單實用,小伙伴們自己對比下看看哪種更適合你呢,一般本人是使用第一種的。2015-03-03
JS前端組件設(shè)計以業(yè)務(wù)為導(dǎo)向?qū)嵺`思考
這篇文章主要為大家介紹了JS前端組件設(shè)計以業(yè)務(wù)為導(dǎo)向?qū)嵺`思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

