1. 程式人生 > >atitit.js 與c# java交互html5化的原理與總結.doc

atitit.js 與c# java交互html5化的原理與總結.doc

pad 托管 works onclick rgb sar com 2.0 swing

atitit.js c# java交互html5化的原理與總結.doc

1. 實現html5化界面的要解決的策略 1

1.1. Js交互 1

1.2. 動態參數個數 1

1.3. 事件監聽 2

2. sendNSCommand 2

2.1.1. --------nativeswing的實現 2

3. 註冊js 事件後臺函數 3

4. 後臺c# 3

5. 參考 4

1. 實現html5化界面的要解決的策略

1.1. Js交互

FirefoxChrome也提供了external對象,比如,他們都默認的實現了opensearch的兩個外部方法:


AddSearchProvider IsSearchProviderInstalled
Chrome下,能夠在控制臺輸入window.external看到。
Firefox默認提供的外部方法稍稍多一些,也能夠能夠通過firebug看到。

作者:: 老哇的爪子 Attilax 艾龍。 EMAIL:[email protected]

轉載請註明來源: http://blog.csdn.net/attilax

1.2. 動態參數個數

Java的是obj[] 對象數組了。默認支持動態參數個數

C#的使用obj[]就不行蘭..子能預保留

function sendNSCommand()

{

//arguments

var s=(arguments);

var argsArray = Array.prototype.slice.call(arguments);

window.external.sendNSCommand(argsArray[0],argsArray[1],argsArray[2],argsArray[4],argsArray[5],argsArray[6],argsArray[7]);

alert(window.external);

}

//供JS調用

public void sendNSCommand(Object message,

Object message2, Object message3, Object message4, Object message5, Object message6, Object message7)

{

// Object[] objs = (Object[])message;

Console.WriteLine(message);

}

1.3. 事件監聽

本文提到的事件。能夠分為三種類型,各自是表單提交、超鏈接跳轉、JavaScript 直接調用 BrowserFunction。當中 JavaScript 調用 BrowserFunction 因為無需刷新頁面,能夠直接運行,因此無需對其進行特殊監聽。然而,Web 上最為常見的表單提交和超鏈接跳轉,都須要刷新頁面,而刷新頁面時。則無法調用 BrowserFunction。那麽怎樣對這些事件進行監聽成為文章的一大難點。

Browser 提供了一個事件監聽機制,能夠為 Browser 加入地址變更監聽器。也就是 LocationListener。這個接口有兩個方法

2. sendNSCommand

onclick="sendNSCommand(‘play‘,‘百度一下‘);"/

Window.external.對象就是我們後臺的一個對象。。

假設未定義,就是null

2.0.1. --------nativeswing的實現

sendNSCommand(‘play‘,video);

3. 註冊js 事件後臺函數

ScriptEvent.ScriptEventDic.Add("play", delegate(IList<object> args) {

MessageBox.Show((string)args[0]);

return null;

});

4. 後臺c#

// 改動webbrowser的屬性使c#能夠調用js方法:

webbrowser.ObjectForScripting = new ScriptEvent();

namespace ClassLibrary1.com.attilax.ui

{

[System.Runtime.InteropServices.ComVisible(true)]

public class ScriptEvent

{

public static Dictionary<String, javaEventHandler> ScriptEventDic = new Dictionary<string, javaEventHandler>();

public delegate Object javaEventHandler(IList<Object> args);//第一步:定義托付類型

//供JS調用

public void sendNSCommand(Object message, Object message2, Object message3, Object message4, Object message5, Object message6, Object message7)

{

// Object[] objs = (Object[])message;

Console.WriteLine(message);

String meth =(String) message;

IList<Object> li = new List<Object>();

li.Add(message2);

li.Add(message3); li.Add(message4); li.Add(message5); li.Add(message6); li.Add(message7);

javaEventHandler hdl = ScriptEventDic[meth];

hdl(li);

}

}

}

5. 參考

Winform控件WebBrowserJS腳本交互 - 冰 魚 - 博客園

atitit.javascript調用java in swt attilax 總結 - attilax的專欄 - 博客頻道 - CSDN.NET.html

WPFWebBrowser 裏面使用JavaScript調用外部方法的決解方法 - Lonely Bandit - 博客園.html

[]JS調用WPF代碼 運行了QueryInterface調用 請求提供COM可見的托管類 JavaScript調WinFrom_最黑de四季_新浪博客.html

Winform控件WebBrowserJS腳本交互 - 冰 魚 - 博客園.html



atitit.js&#160;與c#&#160;java交互html5化的原理與總結.doc