锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Baidu涓鎶?鍙戠幇涓澶ф妸浜哄湪璇翠笉鑳藉崌綰у埌S603.2,閭d笉鍜孨okia鐨勮娉曠煕鐩?Google涓鎶奛okia software upgrade,鎵懼埌涓涓嚜鍔ㄦ洿鏂扮▼搴?br />
榪炰笂鎵嬫満,鍙互鑷繁甯綘璇嗗埆浣犵殑鐢?shù)璇濇槸鍚︽湁鏈鏂拌蔣浠跺崌綰у彲鐢?鑺變簡10澶氬垎閽熷氨涓嬭澆瀹?14Mb鐨勫崌綰ф枃浠?鐒跺悗鍙堣姳浜?鍒嗛挓鍒鋒満鎴愬姛,寮鏈哄悗鎰熻閫熷害娌℃湁澶ぇ鎻愬崌,鍙嶈岄搩澹版病鏈変互鍓嶆竻鑴嗕簡,鎴戜竴嬈劇煭淇¢搩澹頒互鍓嶅惉璧鋒潵楂橀煶闈炲父涓嶉敊,鐜板湪鍚湁鐖嗛煶浜?......椹笂嫻嬭瘯浜嗕笅鎴戣嚜宸卞紑鍙戠殑Widget,鏋滅劧鍙互璇嗗埆騫舵彁紺哄畨瑁?瑁呭ソ浜嗗氨鍜屾櫘閫氱殑Symbian Application涓鏍?涓嶉敊,鍙堟湁寰楃帺浜?.......
浣嗘槸鐢變簬涓鐩存病鏈夋煡鍒癝60鐨勭増鏈煡鐪嬫柟娉?鎵浠ユ垜濮嬬粓涓嶇煡閬撴垜鍒板簳鏄笉鏄崌綰у埌浜?.2,濡傛灉鏈変漢鐭ラ亾,楹葷儲鐣欒█鍛婅瘔涓澹?br />
AIR鍏跺疄鏄竴濂楁鏋跺拰涓涓猇M,瀹冨厑璁哥敤鎴鋒妸Javascript,HTML,CSS闆嗘垚鍒扮粺涓鐨勫鎴風(fēng),鍦ㄧ敤鎴鋒闈㈣繍琛?閬垮厤浜嗘祻瑙堝櫒宸紓,騫朵笖瀹炵幇浜嗚法騫沖彴鐨勯氱敤鎬?鍚屾椂鍙堝Javascript鍔熻兘榪涜浜嗗緢澶氭墿灞?姣斿璇誨彇鏈湴紓佺洏鏂囦歡,鍋氳法鍩熺殑榪滅▼璁塊棶,浣跨敤澶氬獟浣撴枃浠剁瓑絳?鐩鎬俊鏄痜lash鐨勫簳灞傚湪鏀寔),鐩稿浜庝袱騫村墠鐨凢lex,AIR鍦≧IA棰嗗煙鏃犵枒鍙堟槸涓涓法瓚?鎯寵薄涓涓?/span>浠ュ悗鎴戜滑鍙互鐢↗S+HTML+CSS鏉ュ啓鍩轟簬http鐨勮繙紼嬩笖闃茬伀澧欏畨鍏ㄧ殑C/S搴旂敤浜?榪樻槸铔埥鍚?br />
Demo鍦ㄨ繖閲?http://labs.adobe.com/showcase/air/?promoid=BJXTF
鐢↗S鏉ュ啓搴旂敤鐨勬枃妗e湪榪欓噷:http://livedocs.adobe.com/labs/air/1/devappshtml/
Adobe AIR鍑烘柊鐗圫DK鍚?鍑轟箮鎰忔枡鐨勬槸寰堝涔嬪墠鐨凞emo涓嶈兘璺戜簡,浼?xì)鍑?parsing disallowed",鍘熷洜灝辨槸adobe鎹㈢敤浜嗘柊鐨勫畨鍏ㄦ鏋?紱佹鎺変簡Javascript涓煇浜涘彲鑳藉鍏舵鏋跺仛鍑哄畨鍏ㄥ▉鑳佺殑API,姣斿璇碕SON鐨勫懡鏍?-eval
Adobe鐨勫畼鏂硅В閲婃槸鍦ˋIR2紱佹鎺変簡綾諱技eval榪欑鍔ㄦ佷唬鐮佸姞杞芥妧鏈湪鍏禔pplication sandbox涓殑榪愯,瑙e喅鍔炴硶鏄妸浣犳湁eval鐨勫簲鐢ㄧЩ鍒癇rowse sandbox涓墽琛?鎵璋撶殑Browse sandbox鎰忔濇槸浣犵殑搴旂敤涓婚〉闈㈡槸閫氳繃application.xml涓厤緗殑鏍歸〉闈㈡潵鐢╥frame寮曞叆鐨?鍦╥frame寮曞叆鐨勯〉闈腑浣犲氨鍙互鍋歟val,鑰屾妸鍏朵粬濡傝法鍩熸煡璇㈢瓑AIR鎻愪緵鐨勯珮綰PI鎿嶄綔鏀懼埌鏍歸〉闈腑鍘誨仛,鐒跺悗閫氳繃涓涓猵arent/childSandboxBridge鏉ュ仛浜掔浉寮曠敤鍜屼紶閫掓暟鎹殑妗ユ,浣嗘槸鍚屾椂浣犲湪iframe涓殑js涔熶笉鑳界洿鎺ヤ嬌鐢ˋIR鎵鎻愪緵鐨勪竴浜涢珮綰PI,姣斿air.trace().鍘熸枃鐨勮В閲婂湪榪欓噷
,Adobe鐢氳嚦榪樺啓浜嗕竴綃?a target="_blank">鏂囩珷鏉ラ紦鍚硅繖縐嶆柟寮忓叾瀹炴洿絎﹀悎璁捐妯″紡--鏍歸〉闈㈣礋璐f暟鎹紶閫?iframe欏甸潰璐熻矗涓氬姟閫昏緫.浣嗘槸鏃犺濡備綍榪欑瘒鏂囩珷浣滀負(fù)Browse sandbox鐨勫叆闂ㄦ潵璁茶繕鏄緢鍊煎緱緇嗚鐨?br />
浜庢槸緇撳悎鑷繁褰撳墠鐨勫疄闄呴渶瑕?鎴戝啓浜嗕竴涓壒閲忔煡璇irasia.com鏈虹エ鐨勫皬宸ュ叿,鍥犱負(fù)airasia浠庢潵閮芥槸鎵撳箍鍛婅浠庡涔呭埌澶氫箙,浠庨偅閲岄鍒伴偅閲屾墠鍑犲潡MYR璧?/span>! 灝辨槸榪欎釜"璧?瀛楃浉褰撳叧閿?.....鐩存帴閫犳垚姣忔鎴戝幓鏌ョ殑鏃跺欏彂鐜板洜涓?宸茬粡蹇弧鍧?浜?鎵浠ヤ環(huán)鏍煎拰騫蟲椂鐨勪竴鏍?鐢氳嚦鏇撮珮,鍚悓浜嬭浠栦滑閮芥槸鍏堜竴澶╀竴澶╁幓鏌ョ湅鍝ぉ渚垮疁灝辮刀蹇瀹?澶緵鑻︿簡鍚?閭f垜瑕佹煡2007-11-05鍒?008-01-31鏃ョ殑鏈虹エ瑕佽姳澶氬皯鏃墮棿鍟?鑰屼笖涓嶆煡鍒版渶鍚庝竴澶╄繕涓嶇煡閬撴槸涓嶆槸鏈渚垮疁鐨?鍢茬瑧浠栦滑鍘熷涔嬪悗鎴戝氨鍐沖畾鑷繁鍐欎釜宸ュ叿鏉ユ煡
鎵浠ユ垜鍐欑殑絎竴涓狝IR搴旂敤灝辨槸榪欎釜AirAsiaTicketsSearch,鍙互鎵歸噺鏌ヨ鏌愪釜鏃墮棿孌靛幓鍜屾煇涓椂闂存鍥炵殑鎵鏈夋満紲?騫朵笖鎶婃満紲ㄤ環(huán)鏍肩敤jQuery.tablesort緇欐帓搴忓嚭鏉?騫朵笖鐢╦Query.tablesort.page鍋氫簡鍒嗛〉(璇村彞棰樺璇?jQuery鐨則ablesort紜疄寰堝己澶?浣嗘槸鍦ㄦ帓搴?1,280.00 CNY"榪欑鏁版嵁鐨勬椂鍊欒繕鏄湁闂).鍙﹀寮鍙戠幆澧冨煎緱涓璇?鏃犺鏄痚clipse+aptana鎴栬卆ptana standalone閮戒竴鏍風(fēng)殑,aptana灝辨槸涓涓狤clipse鐨凴CP,鍏抽敭灝辨槸aptana鐪熺殑鏄緢濂界敤鐨勫伐鍏?鐩墠涓嶄粎鏀寔AIR,鑰屼笖榪樻敮鎸佸紑鍙慉pple iPhone鐨勫簲鐢?鍙槸涓撲笟鐗堣鏀惰垂.....
鍚庨潰緇欏嚭鎴浘,緇撴灉鍙戠幇鏄ㄥぉ榪樻湁295.99鐨勬満紲?鍒頒簡浠婂ぉ灝辨定鍒?49.99浜?_-!
緇撴灉浠婂ぉ緇堜簬鐪嬪埌涓綃?em>Morris Johns鐨勬枃绔?鐢ㄤ簡涓嶅埌5鍒嗛挓灝辨妸闂寘鏄粈涔堣鐨勬竻娓呮妤?姣斿鏂囩珷涓湁涓鍙ヨ瘽:
In JavaScript, if you use the function
keyword inside another function, you are creating a closure.
濡堢殑,榪樻湁姣旇繖鏇寸畝鍗曠殑瑙i噴鍚?涓轟粈涔堥偅浜涘浗鍐呮墍璋撶殑鐗涗漢灝辨槸鍐欎笉鍑鴻繖縐嶅鉤瀹炵殑璇?灝遍潪瑕佹氮璐硅嚜宸卞拰鍒漢鐨勬椂闂磋涓鍫嗚矊浼兼誕浜戠殑瀹氫箟,鎴戣寰椾粬浠湡鐨勮鎬濊冧笅鑷繁鍐欐妧鏈枃绔犵殑鐩殑,鏄負(fù)浜嗗湪浼犻掔煡璇?榪樻槸鍦ㄦ弧瓚寵嚜宸辯殑铏氳崳,濡傛灉鏄悗鑰?寤鴻鐩存帴鍦═ag涓敞鏄?鑷叞璐?,鍏嶅緱嫻垂澶у鐨勬椂闂?
鍦ㄥ悗闈㈢殑鏂囩珷涓?浣滆呭垪涓句簡寰堝鐢熷姩鐨勪緥瀛?姣忎釜渚嬪瓙鍚庨潰鐨勮В閲婇兘闈炲父騫沖疄,娌℃湁浠諱綍涓轟簡琛ㄧ幇鑷繁鑳藉姏鐨勫崕涓借緸钘?閫氳繃浠栫殑渚嬪瓙,鎴戝緢蹇悊瑙g殑闂寘鐨勭壒鐐?鍙互鐢ㄦ潵鍋氫粈涔?鍓嶅悗涓嶅埌30鍒嗛挓,鍥炴兂鎴戝嚑涓湀鍓嶅厜鏄壘鍚堥傜殑瑙i噴灝辨壘浜嗚繎涓涓皬鏃?
褰撴垜瀵歸棴鍖呯殑鐗圭偣宸茬粡璋欑啛浜庡績鍚?浣滆呭啀寮濮嬭涓浜涙娊璞$殑瀹氫箟,璁╀漢鎰熻娌℃湁涓鐐歸殰紕?灝卞浣滆呰嚜宸辯殑璇?
If everything seems completely unclear then
the best thing to do is to play with the examples. Reading an explanation is
much harder than understanding examples.
My explanations of closures and stack-frames etc are not technically correct
- they are gross simplifications intended to help understanding. Once the
basic idea is grokked, you can pick up the details later.
鏈鍚庣粰鍑洪偅綃囨枃绔犵殑鍦板潃,鐩鎬俊涓嶆噦闂寘鐨勪漢涔熻兘鍍忔垜涓鏍峰緢蹇氨鐞嗚В,鍚屾椂涔熷笇鏈涘ぇ瀹剁湅瀹屽悗鍒繕浜嗗埆浜鴻笍韙忓疄瀹炲啓鎶鏈枃绔犵殑鎬佸害
http://www.javascriptkit.com/javatutors/closures.shtml
鐩墠鎯沖埌鍙互瀹炵幇鐨勬柟娉?
add(o);
addAll(array)
contain(o);
get錛坕nt);
getAll();
sort(comparator); //浼犺繘鍘葷殑鏄竴涓猣n,榪樻病鏈夊啓渚嬪瓙....
size();
remove();
reverse();
鍩烘湰鏁版嵁緇撴瀯鏄袱涓暟緇?涓涓槸index鏁扮粍,鏁扮粍涓嬫爣榪炵畫,鐢ㄦ潵瀛樻斁絎簩涓暟緇勭殑涓嬫爣,鍙︿竴涓槸瀛樻斁瀵硅薄鐨勬暟緇?涓嶈繛緇?涓嬫爣鏄璞$殑id鎴栬呭璞′腑鍏朵粬浠諱綍鍙互杞崲鎴愬敮涓Integer鐨凢ield(Set涔熻姹傛斁榪涘幓鐨勫璞″繀欏昏鏈塰ashCode鍢?涓嶇劧娌℃硶鍖哄埆絎竴涓拰絎簩涓?
瀹炵幇鐨凙PI:
function Collection(){
this.chain=new Array();
this.table=new Array();
}
Collection.prototype.get=function(i){
return this.table[this.chain[i]];
}
Collection.prototype.add=function(o){
this.table[o.id]=o;
this.chain.push(o.id);
}
Collection.prototype.addAll=function(array){
for(var _i=0;_i<array.length;_i++){
this.add(array[_i]);
}
}
Collection.prototype.contain=function(o){
if(this.table[o.id]){
return true;
}else{
return false;
}
}
Collection.prototype.getAll=function(){
tempList=new Array();
for(var _i=0;_i<this.chain.length;_i++){
tempList.push(this.table[this.chain[_i]]);
}
return tempList;
}
Collection.prototype.sort=function(comparator){
this.chain.sort(comparator);
}
Collection.prototype.remove=function(o){
var _var = this.chain;
for(var _i=0;i<this.chain.length;i++){
if(this.table[this.chain[_i]].id==o.id){
this.table[this.chain[_i]]=null;
this.chain.splice(_i,1);
return;
}
}
}
Collection.prototype.size=function(){
return this.chain.length;
}
Collection.prototype.reverse=function(){
this.chain.reverse();
}
鐩墠榪樻湁涓涓猘ddAll鏂規(guī)硶涔熸槸鏆傛椂娌℃湁鎯沖埌鏈変粈涔堜笉鐢ㄩ亶鍘嗙殑濂界殑瀹炵幇
鍓嶅悓浜嬫彁渚涗簡涓縐嶅畬鍏ㄥ拰Set涓鏍風(fēng)殑瀹炵幇,鏁堢巼婊¢珮
function Map(){
this.obj = {};
this.count = 0;
}
Map.prototype.put = function(key, value){
var oldValue = this.obj[key];
if(oldValue == undefined){
this.count++;
}
this.obj[key] = value;
return oldValue;
}
Map.prototype.get = function(key){
return this.obj[key];
}
Map.prototype.remove = function(key){
var oldValue = this.obj[key];
if(oldValue != undefined){
this.count--;
delete this.obj[key];
}
return oldValue;
}
Map.prototype.size = function(){
return this.count;
}
function Set(getKey){
this.map = new Map();
this.getKey = getKey;
}
Set.prototype.add = function(value){
var key = this.getKey(value);
this.map.put(key, value);
}
Set.prototype.remove = function(value){
var key = this.getKey(value);
this.map.remove(key);
}
Set.protorype.getAll=function(){
tempArray=new Array();
for(var i in this.obj){
tempArray.push(i);
}
return tempArray;
}
Set.prototype.size = function(){
return this.map.size();
}
榪樻湁涓涓湅鍙嬬殑瀹炵幇鍜屾垜鏈鍒濈殑宸笉澶?浣嗘槸remove鏂規(guī)硶鐩稿綋鏈夊垱鎰?鐢ㄦ鍒欒〃杈懼紡鏉ュ垹闄?br />
Collection.prototype.remove=function(o){
var _var = this.chain;
this.table[o.id]=null;
var re = new RegExp("(^["+o.id+"]$)|(^["+o.id+"][,])|([,]["+o.id+"]$)","g");
var s = "["+this.chain.toString().replace(re,"").replace(","+o.id+",",",")+"]";
this.chain=eval(s)
}
鏈変漢鍥炲璇撮渶瑕佹坊鍔犲仛楠岃瘉,鎴戣寰椾笉蹇呬簡,濡傛灉娣誨姞鐨勫煎拰涔嬪墠鐨勪竴鏍峰氨鐩存帴鏇挎崲濂戒簡,濡傛灉甯屾湜涓嶈replace,鐩存帴鍦ㄦ坊鍔犳柊瀵硅薄涔嬪墠鐢╟ontain鍒ゆ柇涓嬈″氨鍙互浜?姣曠珶鍦ㄦ垜鐨勫疄鐜頒腑宸蹭笉鏄畬鍏ㄥ湪妯℃嫙Set浜?鐩墠鏇村懼悜浜庤璁′竴涓洿楂樻晥鍜屽己澶х殑闆嗗悎綾?br />
鏈榪戝仛AJAX妗嗘灦鏃跺彂鐜頒竴縐嶆柟娉?涓嶄粎鍙互璺ㄥ煙,鑰屼笖鐩告瘮XHR鍙互鐪佸幓寰堝瑙f瀽XML鐨勬楠?
鍚庢潵灞呯劧鍙戠幇GoogleMap鐨凙PI灝卞湪鐢?闈炲父鎯婂枩,璧跺揩鍒嗕韓涓涓?br>
test.html
<html>
<title>Dynamic Script Object</title>
<head/>
<body>
<div id="jsArea">
<script id="js" src=testa.js></script>
</div>
<br>
<input type="button" value="test" onclick="testSrc()">
</body>
</html>
<script>
//author:Kerwin.Weng
//mail:hunteva@163.com
function testSrc(){
var jsObj = document.getElementById("js");
var body = jsObj.parentNode;
body.removeChild(jsObj);
jsObj = null;
var newJS=document.createElement("script");
newJS.id = "js";
newJS.src = "testb.js";
body.appendChild(newJS);
jsArea.innerHTML="Asynchronous"
}
var jsArea = document.getElementById("jsArea");
</script>
AJAX | DSSO | |
璺ㄥ煙璁塊棶 | 涓嶆敮鎸?/td> | 鏀寔 |
寮傛鎿嶄綔 | 鏀寔 | 鏀寔(body.appendChild鍚庝笉闇瑕佺瓑鍒板畬鎴愭墠浼?xì)鐟艟l?褰撶劧瀹屾暣鐨勫紓姝ヨ闂渶瑕佸彟澶栫殑pattern鏉ユ敮鎸? |
鏁版嵁杞戒綋 | XML鎴朖SON鎴朤EXT | 鍙互鐩存帴鐢眘erver鍐欐垚Javascript |
鎿嶄綔澶嶆潅鎬?/td> | 闇瑕佽В鏋怷ML鎴朖SON | 鍙互鐩存帴浣跨敤 |