日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 人人澡超碰碰97碰碰碰 | 国产羞羞 | 免费毛片一区二区三区久久久 | 小早川怜子一区二区三区 | 天天躁日日躁狠狠躁av麻豆 | 日韩欧美中文在线 | 色乱码一区二区三区在线男奴 | 精品视频免费看 | 国产欧美一区二区精品性色 | 亚洲色图日韩精品 | 98精品国产 | 五月婷婷激情 | 91精品免费视频 | 日日草天天干 | 免费看裸体视频网站 | 天天婷婷 | 成人av一区 | 丝袜在线一区 | 日韩免费a| 欧美乱轮 | 四虎最新网址在线观看 | 天天天天天天天干 | 国产亚洲精品码 | 91精品区| 久久国产免费视频 | 中文字幕色站 | 天天看片天天爽 | 中文av资源 | 日韩精品――色哟哟 | 亚洲私人影院 | 日韩一区二区三区四区五区 | 综合一区 | 色臀av| 少妇一级淫片免费观看 | 日日射日日干 | 色呦呦国产 | 特级a毛片| 亚色综合| www.国产一区| 亚洲精品久久久久久宅男 | 8x8x永久免费视频 | 欧美日韩一区二区三区在线观看 | 五月天激情综合网 | 黄色精彩视频 | 日韩无码精品一区二区三区 | 无人在线观看高清视频 | 韩国色网 | 不卡一区二区在线 | 国产真实生活伦对白 | 欧美视频中文字幕 | 国产免费一区,二区 | 天天躁夜夜躁av天天爽 | 国产精品一区二区av白丝下载 | 永久精品视频 | 欧美在线不卡视频 | 成人国产片| 免费观看污网站 | 一区二区三区不卡视频 | 久久久精品麻豆 | 久久精品成人 | 国产成人精品一区二三区 | 亚洲精品乱码久久久久久蜜桃欧美 | 久热这里只有 | 狠狠的日 | 亚洲高清免费视频 | 色吧五月天 | 激情视频在线观看免费 | 欧美做爰xxxⅹ性欧美大片 | 一本大道一区二区 | 日韩视频免费观看高清完整版在线观看 | 椎名空在线播放 | 国产日本一区二区 | 中文字幕成人一区 | 国产一级淫 | 中日韩精品一区二区三区 | av在线资源网站 | 天堂中文网在线 | 福利社午夜影院 | 影音先锋成人在线 | 国产精品果冻传媒 | 国内外成人免费视频 | 91麻豆精品久久久久蜜臀 | 六月丁香婷婷激情 | 伊人五月综合 | 黄色三级视频在线观看 | 国产成人在线一区 | 在线视频观看一区二区 | 午夜成人在线视频 | 日韩久久电影 | 一直草 | 农村激情伦hxvideos | 日韩高清三区 | 级毛片| 麻豆影片| 男人干女人视频 | 国产人妖在线观看 | 日韩欧美中文字幕在线播放 | 亚洲乱码国产乱码精品 | 五月天中文字幕mv在线 |