讀古今文學網 > 編寫高質量代碼:改善JavaScript程序的188個建議 > 寤鴻139錛氫嬌鐢╯cript瀹炵幫寮傛閫氫俊 >

寤鴻139錛氫嬌鐢╯cript瀹炵幫寮傛閫氫俊

鍒┼敤錛渟cript錛炴爣絳捐始澶熷姩鎬佸姞杞藉閮↗avaScript鑴氡湰鏂淵歡銆樹avaScript鑴氡湰鏂淵歡涓嶄米鍙互琚墽琛岋紝榪樺螭浠紶杈撴暟鎹紝鎵€浠笉濡ㄥ渜鏈嶅垓鍣ㄧ浣跨敤JavaScript鏂淵歡鏉檮鍔犱紶閫掑搷搴旆俊鎮紝褰撳渜瀹二垌褲嬌鐢╯cript鍏冪礌鍔犺澆榪滅▼鑴氡湰鏂淵歡鏃訛紝榪鬱塞闄勫姞鍦↗avaScript鏂淵歡涓殑鍝嶅簲淇℃伅涔爨竴鍚屻鍔犺澆鍒板鎴風錛屻嚜鐒朵篃鑳藉杈懼埌寮傛淇℃伅濱簰鐨動洰鐨勩€?/p>

渚嬪錛屾柊寤轟竴涓鎴風淇℃伅濱簰鍜屻奼傞〉闈紙script_main.htm錛多紝鐒跺悗杈撳靉涓嬮潰鐨蹺唬鐮觥細


錛涉tml錛?/p>

錛涉ead錛?/p>

錛渢itle錛炱紓姝俊鎮氦濱掞紲/title錛?/p>

錛渟cript language=\"javascript\"type=\"text/javascript\"錛?/p>

function callback(info){

alert(info);

}

錛?script錛?/p>

錛渟cript type=\"text/javascript\"src=\"script_serve.js\"錛烇紲/script錛?/p>

錛?head錛?/p>

錛汶ody錛?/p>

錛涉1錛炱鎴風淇℃伅濱簰欏甸潰錛?h1錛?/p>

錛?body錛?/p>

錛?html錛?/p>


鎺潃鍦ㄦ湇鍔$鐨剆cript_serve.js鑴氡湰鏂淵歡涓皟鐢ㄥ洖璋富戲鎖癱allback錛屼唬鐮佸涓嬶細


callback(\"Hi錛岸瀹跺錛屾垛鏄粠鏈嶅垓鍣ㄧ榪呸撒鐨蹺俊鎮嬌鑰呫€?);


姝椂錛岸鏋滆繡琛岸鎴風濱簰欏甸潰錛坰cript_main.htm錛多紝灝嗕細鍦ㄥ鎴風濱簰欏甸潰涓脊鍑衡€淗i錛岸瀹跺錛屾垛鏄粠鏈嶅垓鍣ㄧ榪呸撒鐨蹺俊鎮嬌鑰呫€滀€濈殑鍝嶅簲淇℃伅錛屻繖濱涗俊鎮撒鑷湇鍔〞櫒褲€?/p>

褰撴湇鍔〞櫒褲疛avaScript鏂淵歡琚姞杞藉埌瀹二垌褲氦濱掗〉闈腑鏃訛紝瀹富寘鍚殑鑴氡湰灝辨垚涓轟氦濱掗〉闈綔鐢ㄥ煙涓殑涓€閮ㄥ垎錛屼篃灝辨槸璇達紝script_serve.js鏂淵歡涓殑鑴氡湰瀹為檯涓婂凡緇忔垚涓簊cript_main.htm欏甸潰鑴氡湰鐨蹺竴閮ㄥ垎錛岸嵇鏈€緇堡殑榪愯緇撴灉搴旇鏄繖鏍風殑錛?/p>


錛涉tml錛?/p>

錛涉ead錛?/p>

錛渢itle錛炱紓姝俊鎮氦濱掞紲/title錛?/p>

錛渟cript language=\"javascript\"type=\"text/javascript\"錛?/p>

function callback(info){

alert(info);

}

錛?script錛?/p>

錛渟cript language=\"javascript\"type=\"text/javascript\"錛?/p>

//鏈嶅垓鍣ㄧ鍝嶅簲欏甸潰

callback(\"Hi錛岸瀹跺錛屾垛鏄粠鏈嶅垓鍣ㄧ榪呸撒鐨蹺俊鎮嬌鑰?\");

錛?script錛?/p>

錛?head錛?/p>

錛汶ody錛?/p>

錛涉1錛炱鎴風淇℃伅濱簰欏甸潰錛?h1錛?/p>

錛?body錛?/p>

錛?html錛?/p>


褰划扐涔熷螭浠姩鎬佺敓鎴怪cript鍏冪礌錛屼互瀹炵幫閫氳繃script鍏冪礌瀹炴柦寮傛濱簰鍔熻始鐨勫皝瑁呫€?/p>

絎?姝紝鍦ㄩ〉闈腑瀹氫菎涓€涓紓姝奼傜殑灝佽鍑芥暟錛屼唬鐮佸涓嬶細


//鍒涘緩錛渟cript錛炴爣絳?/p>

//鍙傛暟錛歎RL琛ㄧ瑕佽奼傜殑鏈嶅垓鍣ㄧ鏂淵歡璺緞

//榪斿洖鍊鹼細鏃?/p>

function request(url){

if(!document.script){

document.script=document.createElement(\"script\");

document.script.setAttribute(\"type\",\"text/javascript\");

document.script.setAttribute(\"src\",url);

document.body.appendChild(document.script);

}

else{

document.script.setAttribute(\"src\",url);

}

}


絎?姝紝瀹岸杽瀹二垌褲氦濱掗〉闈三殑緇撴瀯鍜屻剼鏈唬鐮併€備芄闈四繖涓奼傚戲鎖版槸鎖翠釜script寮傛濱簰鐨勤牳蹇寇€備笅闈一氨鍙互鏉璁〞鎴風濱簰欏甸潰錛屼唬鐮佸涓嬶細


錛涉tml錛?/p>

錛涉ead錛?/p>

錛渢itle錛炱紓姝俊鎮氦濱掞紲/title錛?/p>

錛渟cript language=\"javascript\"type=\"text/javascript\"錛?/p>

function callback(info){//瀹二垌褲洖璋富戲鎖?/p>

alert(info);

}

function request(url){//script寮傛璇鋒眣鍑芥暟

//浠g爜鍚屼芄

}

window.onload=function{//欏甸潰鍒濆鍖枻鎒骨戲鎖?/p>

var b=document.getElementsByTagName(\"input\")[0];

b.onclick=function{//涓洪〉闈二寧閽磷瀹氬紓姝奼傚戲鎖?/p>

request(\"script_serve.js\");

}

}

錛?script錛?/p>

錛?head錛?/p>

錛汶ody錛?/p>

錛涉1錛炱鎴風淇℃伅濱簰欏甸潰錛?h1錛?/p>

錛澀nput name=\"submit\"type=\"button\"id=\"submit\"/錛?/p>

錛?body錛?/p>

錛?html錛?/p>


絎?姝紝鍦ㄦ湇鍔〞櫒褲殑鍝嶅簲鏂淵歡錛坰cript_serve.js錛變腑杈撳靉涓嬮潰鐨蹺唬鐮觥細


callback(\"Hi錛岸瀹跺錛屾垛鏄粠鏈嶅垓鍣ㄧ榪呸撒鐨蹺俊鎮嬌鑰呫€?);


涓婇潰script_serve.js鏂淵歡鏄疛avaScript鑴氡湰鏂淵歡錛屻€屼笉鏄叾浠栫被戣嬬殑緗戰〉鏂淵歡錛屻繖鏍峰綋鍗曞嚮鐫夐挳鏃舵墠浼氳鍙賊紓姝奼傚拰鍝嶅簲琛屼負銆?/p>

褰撲嬌鐢╯cript鍏冪礌浣滀負寮傛閫氫俊鐨勫伐鍏鋒椂錛岸疄鐜頒俊鎮氦鎹三殑鏈€綆€鍗晨柟娉曞氨鏄埲鐢ㄥ弬鎖頒粠瀹二垌褲悜鏈嶅垓鍣ㄧ浼吠€掍俊鎮紝榪欑鍦║RL涓檮鍔豺弬鎖扮殑鏂瑰紡鏄渶蹇嵎鐨勤柟娉曪紙URL涓檮鍔豺弬鎖板嵇鏌瀛屋涓詫級銆傜扐鍚庢湇鍔〞櫒褲帴鏀惰繖濱涘弬鎖幫紝騫舵婀鍝嶅簲淇℃伅浠avaScript鑴氡湰褰一紡浼豺洖瀹二垌褲€?/p>

渚嬪錛岸渜瀹二垌褲氦濱掗〉闈紙濡滀€渟cript寮傛閫氫俊涔嬪弬鎖頒紶閫抇main.htm鈥濂級涓互涓嬮潰鐨勫艦寮忏悜鏈嶅垓鍣ㄥ發鍑鴻奼骨細


錛涉tml錛?/p>

錛涉ead錛?/p>

錛渢itle錛炱紓姝俊鎮氦濱掞紲/title錛?/p>

錛渟cript language=\"javascript\"type=\"text/javascript\"src=

\"code_serve.js?id=8\"錛烇紲/script錛?/p>

錛汶ody錛?/p>

錛涉1錛炱鎴風淇℃伅濱簰欏甸潰錛?h1錛?/p>

錛?body錛?/p>

錛?html錛?/p>


鍦↗avaScript澶栭儴鏂淵歡鐨刃RL涓檮鍔犱簡涓€涓弬鎖癷d=8錛屻繖涓弬鎖版槸瀹二垌褲紶閫掔稃鏈嶅垓鍣ㄧ鐨徹紝甯屾湜鏈嶅垓鍣ㄨ始澶熸帴鏀惰鍙傛暟錛岸苟鑳藉鏍規嵁璇弬鎖板搷搴旂溮搴旂殑淇℃伅錛屼紶鍥炱搷搴旆俊鎮€傝繖縐嶆簪娉晨槸濂界殑錛岄棶棰樻槸璇浣疊鏈嶅垓鍣ㄧ鑾峰彇榪鬱釜鍙傛暟淇℃伅錛堝id=8錛綏憿錛?/p>

鍒┼敤Location瀵硅薄鐨剆earch灞炴€始澶熸崟鑾稨TTP鐨刃RL浠煡璇一瓧絎︿覆淇℃伅錛岸嵇鍦ㄦ湇鍔〞櫒褲殑code_serve.js鏂淵歡涓緭鍏笅闈三殑浠g爜錛?/p>


var queryString=location.search.substring(1);

alert(queryString);


浣奚槸錛岸綋榪愯瀹二垌褲氦濱掗〉闈二椂錛屾彁紺轟俊鎮負絀猴紝璇存梅鏈嶅垓鍣ㄧ騫舵病鏈倨帴鏀跺埌榪鬱釜鍙傛暟錛屾槸涓嶆槸寰堝鎬紵濡傛灉浣跨敤涓嬮潰鐨蹺唬鐮佹帴鏀禜TTP涓畬鎖寸殑URL瀛屋涓蹭俊鎮紝鍒鬱細榪斿洖瀹二垌褲氦濱掗〉鐮佺殑URL瀛屋涓詫紝鑰屼笉鏄牽鎺殑JavaScript鏂淵歡URL錛堝鈥涉ttp://localhost/mysite/script寮傛閫氫俊涔嬪弬鎖頒紶閫抇main.htm鈥濆瓧絎︿覆錛齋€傞毦鎬嬌鐢ㄤ芄闈唬鐮佷細鎺敹涓嶅埌浠諱綍鍙傛暟鍛紒


var queryString=location.href;

alert(queryString);


浣跨敤Location瀵硅薄鏄笉鑳藉鎺敹瀹二垌褲氦濱掗〉闈腑鍖喋惈鐨勫閮↗avaScript榪炴帴鏂淵歡鐨刃RL瀛屋涓蹭俊鎮殑銆傚渜鏈嶅垓鍣ㄧJavaScript鏂淵歡涓紝浣跨敤鑴氡湰鏉鍙枻鎴風濱簰欏甸潰涓紲script錛炴爣絳劇殑src灞炴€€鹼紝浠g爜濡備笅錛?/p>


/*閬嶅卷瀹二垌褲氦濱掗〉闈三殑鎵€鏈多紲script錛炴爣絳撅紝鎵懼埌src灞炴€寘鍚?script寮傛閫氫俊涔嬪弬鎖頒紶閫抇serve.js\"鐨勤爣絳撅紝騫跺尮閰嶅嚭鏉URL鐨勫弬鎖幫紝浠庝腑絳溳€綏嚭闄勫甫鍥閃皟鍑芥暟鍚嶇鐨勫弬鎖幫紝鐒跺悗鍒┼敤榪鬱釜鍥閃皟鍑芥暟鎵鏈嶅垓鍣ㄧ浼吠€掔殑淇℃伅*/

var js=\"script寮傛閫氫俊涔嬪弬鎖頒紶閫抇serve.js\";//鍖歸厤鐨凧avaScript鏂淵歡鍚嶇

var r=new RegExp(js+\"(\\?(.*))?$\");//瀹氫菎鍖歸厤鍙傛暟鐨勤鍒欒〃杈懼紡

var script=document.getElementsByTagName(\"script\");/*鑾峰彇瀹二垌褲氦濱掗〉闈腑鍖喋惈鐨勤塈鏈塻cript鍏冪礌*/

for(var i=0;i錛渟cript.length;i++){//閬嶅卷鎵€鏈塻cript鍏冪礌

var s=script[i];

if(s.src錛嗭紗s.src.match(r)){//鍒柇鏄惁瀛樺渜鍙傛暟

var oo=s.src.match(r)[2];

if(oo錛嗭紗(t=oo.match(/([^錛?]+)=([^=錛啷+)/g))){//鍖歸厤鍑烘塈鏈綏弬鎖?/p>

for(var l=0;l錛渢.length;l++){//閬嶅卷鎵€鏈綏弬鎖?/p>

r=t[l];

var c=r.match(/([^錛?]+)=([^=錛啷+)/);//鍖歸厤姣仁釜鍙傛暟

if(c錛嗭紗(c[2]==\"callback\")){

var f=eval(c[2]);//嬋€媧誨洖璋富戲鎖板悕縐板瓧絎︿覆

f(\"Hi錛岸瀹跺錛屾垛鏄粠鏈嶅垓鍣ㄧ榪呸撒鐨蹺俊鎮嬌鑰呫€?);

}

}

}

}

}


涓婇潰鐨凧avaScript鏂淵歡鏄湇鍔〞櫒褲奼傜殑鑴氡湰鏂淵歡銆傛帴涓嬫撒榪愯瀹二垌褲氦濱掗〉闈紙script寮傛閫氫俊涔嬪弬鎖頒紶閫抇main_js.htm錛多紝鍦ㄥ崟鍑誨叾涓殑銆愯奼傘€戛寧閽莿鍚峬紝浼氬脊鍑烘紜俊鎮€?/p>

瑕佷嬌鐢↗avaScript鏂淵歡鍚戛湇鍔〞櫒璇鋒眣淇℃伅錛岸苟甯屾湜寰楀埌鏈嶅垓鍣ㄧ殑縐瀨鍝嶅簲錛岸螭浠婀script鍏冪礌鐨剆rc灞炴€緗負璇鋒眣鏈嶅垓鍣ㄧ鑴氡湰鏂淵歡錛屻€屼笉鏄疛avaScript鏂淵歡銆備褓濡骨紝浠SP鏈嶅垓鍣ㄦ妧鏈負渚嬶紝鍙互榪欐牁榪瀆璇鋒眣錛?/p>


window.onload=function{

var b=document.getElementsByTagName(\"input\")[0];

b.onclick=function{

var url=\"script寮傛閫氫俊涔嬪弬鎖頒紶閫抇serve.asp?callback=callback\";//璇鋒眣ASP鏂淵歡

request(url);

}

}


鍗寵奼傜殑鏄枃浠跺悕涓篈SP綾誨瀷鐨勤湇鍔〞櫒褲剼鏈枃浠訛紝鑰屼笉鏄疛avaScript鑴氡湰鏂淵歡銆傝繖鏍鳳紝灝卞螭浠埲鐢ㄦ湇鍔〞櫒鈮€鏈撒鎺敹璇鋒眣浼吠€掔殑鍙傛暟濱嗭紝浠g爜濡備笅錛堝弬瑙€渟cript寮傛閫氫俊涔嬪弬鎖頒紶閫抇serve.asp鈥濇枃浠訛級錛?/p>


錛?@LANGUAGE=\"VBSCRIPT\"CODEPAGE=\"65001\"%錛?/p>

錛?

callback=Request.QueryString(\"callback\")

Response.Write(\"callback(\'Hi錛岸瀹跺錛屾垛鏄粠鏈嶅垓鍣ㄧ榪呸撒鐨蹺俊鎮嬌鑰呫€?)\")

%錛?/p>


鍙︿竴涓渶瑕佽鑰呮敞鎰忕殑闀灝辨槸瀛屋緙栫爜鐨蹺竴鑷存€€傚綋鏈嶅垓鍣ㄥ悜瀹二垌褲搷搴旆俊鎮椂錛岸渜HTTP浼犺緭涓塈浣跨敤鐨勫瓧絎︾紕鐮侀粯璁負UTF-8錛岸嵇鍥介檯閫氧敤緙栫爜銆傚鏋滄湇鍔〞櫒褲剼鏈紕鐮佷負涓枃綆€浣擄紝鍒欏簲璇渜鏈嶅垓鍣ㄧ鍝嶅簲淇℃伅鐨勫閮ㄥ畾涔變俊鎮殑緙栫爜涓嵌B2312銆備褓濡骨紝鍦ˋSP鑴氡湰鏂淵歡涓螭浠繖鏍瘋緗細


錛?@LANGUAGE=\"VBSCRIPT\"CODEPAGE=\"936\"%錛?/p>

錛?

callback=Request.QueryString(\"callback\")

Response.AddHeader\"Content-Type\",\"text/html;charset=gb2312\"

Response.Write(\"callback(\'Hi錛岸瀹跺錛屾垛鏄粠鏈嶅垓鍣ㄧ榪呸撒鐨蹺俊鎮嬌鑰呫€?)\")

%錛?/p>


鍦ㄥ鎴風濱簰欏甸潰涓簲璇緗〉闈三紕鐮觥紝鍏蜂綋緙栫爜涓庢湇鍔〞櫒褲奼傞〉闈三殑緙栫爜綾諱技錛?/p>


錛淵eta http-equiv=\"Content-Type\"content=\"text/html;charset=utf-8\"錛?/p>


瑕佺『淇濆渜寮傛濱簰榪囩▼涓笉鍙戠敓涔辯爜鐜拌薄錛岸簲璇繚璇佺溮鍏抽〉闈一拰浠g爜鐨勫瓧絎︾紕鐮佹槸涓€鑷寸殑錛屾棦鍙互緇爨竴浣跨敤鍥介檯閫氧敤緙栫爜錛屼篃鍙互緇爨竴浣跨敤涓枃綆€浣划紕鐮觥紙936鎴朑B2312錛多紝榛樿浣跨敤鍥介檯閫氧敤緙栫爜錛堝嵇65001鎴朥TF-8錛齋€傝櫧鐒訛紲script錛炴爣絳緎rc灞炴€奼傜殑鏄疊SP鏂淵歡錛屼絾鏄疊SP鍝嶅簲鐨勫瓧絎︿覆鏄鍚圞avaScript璇磣瑙勫垯鐨勫瓧絎︿覆錛岸綋榪鬱塞瀛屋涓茶鍔犺澆鍒板鎴風鐨徹紲script錛炴爣絳懼唴閮ㄦ椂錛岸氨浼氳杞崲涓哄螭浠墽琛出殑JavaScript鑴氡湰浠g爜銆?/p>

鏈€鍚峬紝涓轟簡甯姪璇昏€呬簡瑙d竴涓畬鎖磋€岸張娓呮櫚鐨剆cript寮傛閫氫俊涓弬鎖頒紶閫掔殑榪囩▼錛屾垛浠婀瀹二垌褲拰鏈嶅垓鍣ㄧ瀵瑰簲鐨勤枃浠朵唬鐮佸夬閮ㄦ氣鎒骨嚭鏉紙閬靛驚榛樿鐨勫浗闄呴€氧敤緙栫爜錛齋€傚鎴風濱簰欏甸潰鐨勫畬鎖翠唬鐮觥紙html鏂淵歡綾誨瀷錛綏涓嬶細


錛涉tml錛?/p>

錛涉ead錛?/p>

錛渢itle錛炱紓姝俊鎮氦濱掞紲/title錛?/p>

錛渟cript language=\"javascript\"type=\"text/javascript\"錛?/p>

function callback(info){//鍥閃皟鍑芥暟

alert(info);

}

function request(url){//璇鋒眣鍑芥暟

if(!document.script){

document.script=document.createElement(\"script\");

document.script.setAttribute(\"type\",\"text/javascript\");

document.script.setAttribute(\"src\",url);

document.body.appendChild(document.script);

}else{

document.script.setAttribute(\"src\",url);

}

}

window.onload=function{//欏甸潰鍒濆鍖枻鎒?/p>

var b=document.getElementsByTagName(\"input\")[0];

b.onclick=function{//榧豹爣鍗曞嚮濱嬩歡澶動悊鍑芥暟錛屼紶閫掕奼傜殑鏈嶅垓鍣ㄧ鑴氡湰URL鍜岸弬鎖?/p>

var url=\"script寮傛閫氫俊涔嬪弬鎖頒紶閫抇serve.asp?callback=callback\"

request(url);

}

}

錛?script錛?/p>

錛淵eta http-equiv=\"Content-Type\"content=\"text/html;

charset=utf-8\"錛烇紲/head錛?/p>

錛汶ody錛?/p>

錛涉1錛炱鎴風淇℃伅濱簰欏甸潰錛?h1錛?/p>

錛澀nput name=\"submit\"type=\"button\"id=\"submit\"/錛?/p>

錛?body錛?/p>

錛?html錛?/p>


鏈嶅垓鍣ㄧ鍝嶅簲欏甸潰鐨勫畬鎖翠唬鐮觥紙ASP鏂淵歡綾誨瀷錛綏涓嬶細


錛?@LANGUAGE=\"VBSCRIPT\"CODEPAGE=\"65001\"%錛?/p>

錛?

callback=Request.QueryString(\"callback\")\'鎺敹鍙傛暟

Response.Write(\"callback(\'Hi錛岸瀹跺錛屾垛鏄粠鏈嶅垓鍣ㄧ榪呸撒鐨蹺俊鎮嬌鑰呫€?)\")\'杈撳嚭鍝嶅簲淇℃伅

%錛?/p>


鍦ㄦ祴璇曚芄闈唬鐮佹椂錛岸簲紜繚鍦ㄦ湇鍔〞櫒鐜涓嬭繡琛岋紝鍚﹀垯杈句笉鍒伴鏈熹粨鏋溿€?/p>