日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97

發布時間:2025/7/14 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

atitit.js?javascript?調用c#?java?php后臺語言api?html5交互的原理與總結p97

?

?

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

1.1.?Js交互1

1.2.?動態參數個數2

1.3.?事件監聽2

1.4.?異常轉換2

2.?dwrC.exec3

2.1.?支持?ajax?browExt模式??支持反射,直接繼承調用后臺api3

2.2.?sendNSCommand?(nativeswing的實現)3

2.3.?--------nativeswing的實現3

2.4.?C#?swt都是自定義3

3.?(不通過反射)自定義方法的時候注冊js?事件后臺函數4

3.1.?C#版本4

3.2.?Java4

4.?------------code4

4.1.?后臺c#4

4.2.?通過反射調用java5

4.3.?Dwrc7

5.?參考8

?

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

1.1.?Js交互

FirefoxChrome也提供了external對象,例如,他們都默認的實現了opensearch的兩個外部方法:
AddSearchProvider?IsSearchProviderInstalled
Chrome下,可以在控制臺輸入window.external看到。
Firefox默認提供的外部方法稍稍多一些,也可以可以通過firebug看到。

?

作者::?老哇的爪子?Attilax?艾龍,??EMAIL:1466519819@qq.com

轉載請注明來源:?http://www.cnblogs.com/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,這個接口有兩個方法?

1.4.?異常轉換

如果桌面模型下,一般可以自動異常轉換。

Web模型下,一般需要異常序列化傳遞,然后本地轉換。

2.?dwrC.exec

2.1.?支持?ajax?與browExt模式??支持反射,直接繼承調用后臺api

function?btn_click()

{

try{

var?mp=$("form").serialize();

mp=?"&$method=com.attilax.license.LicenseX.calcSn&$exSerialFmt=json..&$callback=callback&machi_code="+$("#machi_code").val();

dwrC.exec(mp);

?

}catch(e)

{

showErr(e);}

?

}

2.2.?sendNSCommand?(nativeswing的實現)

?

?οnclick="sendNSCommand('play','百度一下');"/

?

?

Window.external.對象就是我們后臺的一個對象。。如果沒有定義,就是null

?

?

2.3.?--------nativeswing的實現

?sendNSCommand('play',video);

?

2.4.?C#?swt都是自定義

3.?(不通過反射)自定義方法的時候注冊js?事件后臺函數

?

3.1.?C#版本

?

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

?

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

??????????????return?null;

??????????

??????????});

3.2.?Java版

4.?------------code

4.1.?后臺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);

?

????????}

????}

}

?

4.2.?通過反射調用java

@Override

public?Object?function(Object[]?arg0)?{

//?logger.debug("ImageSelect");

String?meth?=?arg0[0].toString();

List?li?=?new?ArrayList();

for?(int?i?=?1;?i?<?arg0.length;?i++)?{

li.add(arg0[i]);

}

?

Object?object?=?eventMap.get(meth);

//?p93?ref?invok?so?..should?process?all?in?one?.include?callback

if?(object?==?null)?{

String?classname?=?refx.getClassName(meth);

String?meth_name?=?refx.getMethodName(meth);

Object?o;

try?{

o?=?ConstructorUtils.invokeConstructor(

Class.forName(classname),?null);

Object[]?oa?=?getParams(li);

?

Object?rzt?=?MethodUtils.invokeMethod(o,?meth_name,?oa);

String?callbackHandle?=?(String)?li.get(li.size()?-?1);

?

if?(rzt?instanceof?String)?{?//?simple?obj?str,num

String?js2?=?callbackHandle?+?"('"?+?rzt?+?"');";

boolean?r?=?this.brow.execute(js2);

System.out.println(r);

?

}?else?{?//?plex?obj

String?js2?=?callbackHandle?+?"('"?+?core.toJsonStrO88(rzt)

+?"');";

this.brow.execute(js2);

}

?

return?rzt;

}?catch?(Exception?e)?{

String?params_urlparams_fmt?=?(String)?li.get(0);

Map?mp?=?new?ParamX().urlParams2Map(params_urlparams_fmt);

String?exSerialFmt?=?(String)?mp.get("$exSerialFmt");

if?(exSerialFmt.equals("json"))

return?core.toJsonStrO88(e);

?

throw?ExceptionUtil.convertToRuntimeEx4throwEx(e);

}

}

?

//?def

Closure?evet?=?(Closure)?object;

try?{

return?evet.execute(li);

}?catch?(Exception?e)?{

//?TODO?Auto-generated?catch?block

e.printStackTrace();

}

return?super.function(arg0);

}

?

4.3.?Dwrc

var?dwrC={};

dwrC.exec=function(param,callback,approot)

{

?

try{

param.rdmStr=Math.random();

}catch(e){

?

param=param+"&rdmStr2="+Math.random();

}

?

//p93

if(callback==undefined)

{

var?json=urlParams2json(param);

callback=json.$callback;

}

?

?

?

//

if(isExitsFunction("submit_befor_check"))

submit_befor_check();

//$iocx="aa";

$iocx_iner="";

if(isExitsVariable("$iocx"))

$iocx_iner=$iocx;

//jQuery.get("dwr.php?param="+param,?[data],?[callback])

if(window.location.host!="")??//web?envi

$.ajax(

????????????????????{

????????????????????????type:?"get",

????????????????????????url:?approot+"/com.attilax/dwr.php?iocx="+$iocx_iner,

????????????????????????data:param,

????????????????????????dataType:?"text",

????????????????????????success:?function(data)?{

??????????????????????????//??$("#divShow").html(data);

??data=$.trim(data);

??callback(data);

?????????????????????}

?

?

?});

?//-------------------

if(window.location.host=="")??//cs?envi

{

?

var?json=urlParams2json(param);

var?meth=json.method;

if(json.method==null)??//or??undefined????undefined?gengge?null?sh?yyeod?.

meth=json.$method;

?

//(meth,param1,,param2,param3,callback);

window.setTimeout(function(){

sendNSCommand(meth,param,callback);

},50);

?

?

}

?

?

}

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?c#?java交互html5化的原理與總結.doc?-?attilax的專欄?-?博客頻道?-?CSDN.NET.htm

轉載于:https://www.cnblogs.com/attilax/p/4789546.html

總結

以上是生活随笔為你收集整理的atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.成人免费视频 | 两女双腿交缠激烈磨豆腐 | 成人97| 亚洲第一偷拍 | 国产伦精品一区三区精东 | 国产一页 | 偷拍视频一区二区 | 成人网免费视频 | 国产+日韩+欧美 | 无码国产精品一区二区色情男同 | 国产无套精品一区二区 | 亚洲特级毛片 | 2020av视频| 97精品人妻一区二区 | 天堂在线中文在线 | 成年人免费网站视频 | 久久精品国产亚洲AV熟女 | 久久久久久久久久久97 | 一本久久精品一区二区 | 99riav国产在线观看 | 一曲二曲三曲在线观看中文字幕动漫 | 奇米影视四色在线 | 在线免费观看黄色小视频 | 国产精品毛片久久久久久久av | 中文字幕在线免费观看 | 揄拍成人国产精品视频 | 亚洲av永久无码精品 | 国产精品VideoSex性欧美 | 中文字幕网伦射乱中文 | 午夜av免费在线观看 | 欧美激情免费视频 | 黄色一级片 | 男女激情视频网站 | 色狠狠一区 | 在线观看黄色网页 | 国产第一页在线播放 | 久久精品美女视频 | 成人性生活免费看 | 国产精久久 | 新久草视频 | 黄色片亚洲| 在线观看日本中文字幕 | 激情综合影院 | 天天玩夜夜操 | 国产二区三区 | av五月天在线 | 韩国伦理片在线播放 | 3d成人动漫在线观看 | 怡红院一区二区三区 | 男生操女生免费网站 | 国产精品第56页 | 免费无码又爽又黄又刺激网站 | 爱蜜臀av| 国产熟女精品视频 | 精品中文字幕视频 | 91爱爱网| 亚洲妇女av| 熟妇人妻中文字幕 | 深夜福利网 | 丰满少妇aaaaaa爰片毛片 | 国产高清视频网站 | 日韩免费精品 | 一级全黄裸体免费视频 | 新红楼梦2005锦江版高清在线观看 | 内射一区二区 | 男女一级片 | 久久99久久98精品免观看软件 | 午夜久久久久久噜噜噜噜 | 青青草视频在线观看 | 欧美区一区二区三 | 伊人久久大香线蕉av色婷婷色 | 亚洲爱av| 久久亚洲影院 | 亚洲人午夜射精精品日韩 | 日韩精品中文字幕一区 | 97人人爱 | 日日夜夜免费精品视频 | 美女福利视频 | 嫩草影院在线观看视频 | 99黄色 | 精品人妻久久久久一区二区三区 | 三a大片 | 成人综合婷婷国产精品久久 | 国产精品久久久久久亚洲色 | 一区二区三区www污污污网站 | 久久这里只有精品9 | 日本一区二区观看 | 抽插丰满内射高潮视频 | 少妇人妻一区 | 国产91沙发系列 | 青草视频网 | 一级aaaa毛片 | 国产又爽又色 | 国产自产21区 | 一本—道久久a久久精品蜜桃 | 久久精品专区 | 一本在线免费视频 | 欧美精品999 | 中文日韩在线 |