加入事件handler (兩種方法 擇一即可)
//為input element加入事件handler
HtmlElementCollection tt = divDeviceChoosing.GetElementsByTagName("input");
foreach (HtmlElement a in tt)
{
//Method 1: AttachEventHandler 據說利用+=不會覆蓋父物件的事件(i++與i=1)
a.AttachEventHandler("onclick", new EventHandler(Device_Click));
//Method 2: +=
a.Click +=new HtmlElementEventHandler(teachAni_Click);
}
//事件處理 (兩種方法 擇一即可)
private void teachAni_Click(object sender, EventArgs e)
{
//Method 1: 最快最簡單 (不過要注意事件handl要用HtmlElementEventHandler,而不是EventHandler,不然sender好像會null)
HtmlElement buster = (HtmlElement)sender;
choosing(buster.Id);
//Method 2: 剛被"激化"的ActiveElement
HtmlElement buster = divDeviceChoosing.Document.ActiveElement;
MessageBox.Show(buster.Id);
//int number = int.Parse(buster.Document.ActiveElement.GetAttribute("value"));
String MacAddr = buster.Document.ActiveElement.Id;
}
**動態加入元件及事件處理**
動態加入有兩種
1.利用HtmlDocument.CreateElement
注意:此方法可work,還沒有找到方法移除element ,法二就可以了
//建立一個input的html element
HtmlElement imgDevice = divDeviceChoosing.Document.CreateElement("input");
...
//加入事件處理
imgDevice.AttachEventHandler("onclick", new EventHandler(teachAni_Click));
//再接入某位置
divDeviceChoosing.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, imgDevice);
2.利用innerHtml
//加入多個可利用樣版
for (;;;)
{
string Butstr = "";
//套文字
string OutStr=OutStr.Replace("##id##",id);
}
//加入某段div裡
div.InnerHtml = OutStr;
//事件處理同上
星期五, 11月 23, 2007
星期三, 11月 14, 2007
JavaScript 與 Flash 的通訊範例
JavaScript 與 Flash 的通訊範例
有3種不同的方式
1.JavaScript 對 Flash 的通訊
2.Flash 對 JavaScript 的通訊
*主要通過fscommand 指令
3.Flash 對 Flash 的通訊
另外還有javascirpt call c# function
有3種不同的方式
1.JavaScript 對 Flash 的通訊
2.Flash 對 JavaScript 的通訊
*主要通過fscommand 指令
3.Flash 對 Flash 的通訊
另外還有javascirpt call c# function
星期二, 11月 13, 2007
javascript call c# function
1.c#裡的function
2.加入com
在namespace後的第一行
比public class 更之前 加入 [System.Runtime.InteropServices.ComVisibleAttribute(true)]
ex.
2.為webBrowser加入指定物件
3.在html裡加入要觸發
ex.利用button實作
在onclick="window.external.test()" 就ok啦
public void test()
{
Messagebox.show(""Are you shit on me?");
}
2.加入com
在namespace後的第一行
比public class 更之前 加入 [System.Runtime.InteropServices.ComVisibleAttribute(true)]
ex.
namespace ezLa
{
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class ezLa : Form
...
}
2.為webBrowser加入指定物件
webBrowser1.ObjectForScripting = this; //寫在建構子
3.在html裡加入要觸發
ex.利用button實作
在onclick="window.external.test()" 就ok啦
星期一, 11月 12, 2007
星期三, 11月 07, 2007
WebBrowser 呼叫javascript
1.win form 呼叫javascript
方法:public Object InvokeScript (string scriptName)
實例:webBrowser1.Document.InvokeScript("Method"); //不用加括號,也可加啦
由於內嵌flv player的html無法用c#來設定style="display: none"
不過可使用visibility使之隱藏
但用display才是王道...因為visibility會留空白
而直接利用網頁上的javascipt卻可以讓display正常隱藏
因此得利用webbrowser呼叫javascript...
2.傳參數給javascript
方法:public Object InvokeScript (string scriptName, Object[] args)
範例:MSDN上的例子
Javascript
搞半天,原來不是直接寫在裡面scriptName的括號裡
是要在後面加傳參數array,而且參數會自動依序拆成一個個的參數
3.Thread呼叫javascript
同跨執行緒作業無效的呼叫法,寫法如下,簡化不寫參數
下次研究看怎麼動態增加javascript進去
**備註**
呼叫javascript時,有時會因web page尚未讀完,所以呼叫javascript function會沒有反應
最好是等page loaded通知webbrowser,webbrowser再去call javascript
方法:public Object InvokeScript (string scriptName)
實例:webBrowser1.Document.InvokeScript("Method"); //不用加括號,也可加啦
由於內嵌flv player的html無法用c#來設定style="display: none"
不過可使用visibility使之隱藏
但用display才是王道...因為visibility會留空白
而直接利用網頁上的javascipt卻可以讓display正常隱藏
因此得利用webbrowser呼叫javascript...
2.傳參數給javascript
方法:public Object InvokeScript (string scriptName, Object[] args)
範例:MSDN上的例子
private void InvokeTestMethod(String name, String address)
{
if (webBrowser1.Document != null)
{
Object[] objArray = new Object[2];
objArray[0] = (Object)name;
objArray[1] = (Object)address;
webBrowser1.Document.InvokeScript("test", objArray);
}
}
Javascript
<-HTML>
<-SCRIPT>
function test(name, address) { //自動變成兩個參數
window.alert("Name is " + name + "; address is " + address);
}
<-/SCRIPT>
<-/HTML>
搞半天,原來不是直接寫在裡面scriptName的括號裡
是要在後面加傳參數array,而且參數會自動依序拆成一個個的參數
3.Thread呼叫javascript
同跨執行緒作業無效的呼叫法,寫法如下,簡化不寫參數
private void InvokeTestMethod()
{
if (wbContent.InvokeRequired)
{
wbContent.Invoke(new MethodInvoker(InvokeTestMethod)); //delgete型態,傳Method Name
else
{
webBrowser1.Document.InvokeScript("test");
}
}
下次研究看怎麼動態增加javascript進去
**備註**
呼叫javascript時,有時會因web page尚未讀完,所以呼叫javascript function會沒有反應
最好是等page loaded通知webbrowser,webbrowser再去call javascript
訂閱:
文章 (Atom)