加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

?μ?è§???¨??ˉ?¢????JavaScriptè????????è???????§è???

发布时间:2020-12-15 23:28:51 所属栏目:百科 来源:未知
导读:??¨????????-????????????????o????è??è?????(defer)???????-¥è?????(async)?????§è???????o????μ?è§???¨??ˉ????????μ????μ?è§???¨bug??¥???????????????è??é??é¢????è??é?¤?o?defer???async??1??§?????¨???è????????Ajaxè????

??¨????????-????????????????o????è??è?????(defer)???????-¥è?????(async)?????§è???????o????μ?è§???¨??ˉ????????μ????μ?è§???¨bug??¥???????????????è??é??é¢????è??é?¤?o?defer???async??1??§?????¨???è????????Ajaxè??????3¨??¥?1???ˉ??¤?§??????¨????????o???é?????è??????????1?3????????????¥??????è????¤?§???1?3?é??è??è????°è????????è???????±???é?μé?¢è§£????????2???????????¨????????ˉ??¨??????????μ?è§???¨??-???è????¤?§??????ˉ????????o???è??????????§è???????oè????ˉ??????????·???????????¤????????????¥??¢è?¨??????é??è????¨???è??????????ˉ???Ajax?3¨??¥???è???????¨è???o???1é?¢?????1??§???

??£???????¤????

???????????¨??????2.3è????-???loadScript?????°??¥?·??????¨???è???????????????????¨è???ˉ???????2.4è????-???loadXhrScript?????°??¥?????°Ajaxè??????3¨??¥????????????è????¤??a?????°é???????¨util.js??-???

??|?¤???????????????¨???CHROME???????????o47.0.2526.80???firefox???????????o43.0.4???opera????????o30.0.1835.125???

1.1??¨???è??????????§è???????oé??é¢?

????????¨????μ?è§???¨??ˉ?¢????JavaScriptè????????è???????§è????¢????1?defer???async??1??§?????-2.3è??DEMO?????o??????????¢?????????a?¤?é?¨js?????????

dynamic1.js

test += "?????ˉhead?¤?é?¨??¨???è?????n";

dynamic2.js

test += "?????ˉbody?¤?é?¨??¨???è?????n";

dynamic3.js

test += "?????ˉ?o?é?¨?¤?é?¨??¨???è?????n";

1.1.1 DEMO1?????¨???è??????????§è???????o?????¢

HTML?????£?????o???

Dynamic Script Test

??¨??£?????-????????????????°?3??a??¨???è????????????????¥??°HTML???????-???-?????????é??è??????-£????¤?é?¨è???????????é?¨è??????????§è????¥è??è???ˉ?è???????????????????????????μ?è§???¨??-?????§è???????????

?3¨???firefox???opera??-??§è??????????ˉè???????????

??????é?¢???????-???-???????????ˉ??¥?????o?????¨???????μ?è§???¨??-?????¨???è??????????§è???????o?·????è????ˉ?ˉ?è???¤§???????????¥?????¤??1??ˉ??ˉ??¥????????????

[1]??¨???è?????????????ˉ??¥èμ·??°???é??????????-è?????????????¨?????3???è???????¨????????ˉè????a???è???????¨??′?????????è???¤??????-??°??????????-£???è?????é????§è??????ˉ??1????????1?????3????èˉ?è???¤????è????°DOMContentLoaded?1????

[2]??¨???è???????§è???????????é?o?o???ˉ????3????èˉ???????è???????1??¨è???ˉ?????????¥????????-???????ˉ?????????-è??è???o?èˉ|??????è§£é??

???è????aDEMO??-è????ˉ??¥?????o?????¨???è??????????§è???????o??·???è???¤§??????????????§???è???????¨DEMO1??-?????¨???è?????é????¨DOMContentLoaded?o?????1??????§è??????????′?1??1?????????3?????¨???è??????°±??????é?????DOMContentLoaded?????????é??è??DEOM2??¥????????????

1.1.2 DEMO2?????¨???è??????ˉ1DOMContentLoaded???é?????

?????????DEMO1??-??????27è?????????????1??o???

???????????¨????μ?è§???¨??ˉ?¢????JavaScriptè????????è???????§è????¢????1???£?????§è??é?o?o??????-???delayfile.php????°?3.js???è????????è??5?§?é?????????????¥é??????|??????ˉdefer???è??è???????????è?o?-£????¤?é?¨è????????è???o??¤?é?????é?′???deferè?????è????ˉ?????¨?-£????¤?é?¨è??????1??????§è?????????????ˉ??¨???è???????′?????ˉè????·?o????????????????????????1????????£?????¨?μ?è§???¨??-?????§è??é?o?o????

?3¨???firefox???opera??-??§è??????????ˉè???????????

??ˉ??¥?????°?????¨?????a?-£???è????????è?????é?′è??é????????????????¨???è??????????§è????????????????????è?o??¨IEè????ˉCHROME???firefox???opera??-????????¨DOMContentLoaded?1??????§è?????????-¤????????ˉ??¥????-¥??¤??-?????¨???è??????????§è???????o??ˉ?????????????????¨???????μ?è§???¨?????§è???????o?1?é???-???¨?·??????????????????¥????o?èˉ¥??ˉ??¨??£??????è?????????1????????1?????o??¨???-?2????JavaScript??£?????§è??????????a???é?′?????????????μ?è§???¨?ˉ1è????a???é?′????????????????????????

????-¤?????¨???è???????ˉ??|???é?????DOMContentLoaded?1???ˉ????????????????????o??¨???è???????ˉè????¨DOMContentLoadedè§|????1????????1???ˉè????¨è§|????1??????§è?????è???????±?o?IE<=8?????ˉ???????-£???DOMContentLoaded?o???????jQuery??¨IE<=8??-?1???ˉ?¨??????¤??-èˉ¥?o?????????????(???????ˉ???????é?¨è?2è§£DOMContentLoaded?o????)??????????¨??o|????1?????ˉ1?????????è?°??£????????§è????????é???????±??????

1.1.3 DEMO3?????¨???è????????defer

????????¥é?????deferè???????ˉ??????????ˉ1???????????§è???????o????????3é?μé?¢è§£??????????1???????DOMContentLoadedè§|????1???????è???1??????§è??????o???????????o?è???1?é?′??¨??§è???????o????1?????-???¨????1???3è??????????ˉ??¨???é?????éa???-?????°?????¨???è???????ˉè???????¨deferè??????1???????è???1??????§è??????????′???????????-deferè??????????§è???????????????????¥????μ?è§???¨??ˉ?¢????JavaScriptè????????è???????§è????¢????1?defer???async??1??§?????-2.3è?????DEMO??-???deferè?????????????1HTML??£????|???????

Dynamic Script Test

?3¨???firefox???opera??-??§è??????????ˉè???????????

???????¢?????o??????adefer???è?????????????¥??????????????a?μ?è§???¨??-?????§è???????????

??????éa?????????ˉ??¥?????o?????¨???è??????????§è???????o???deferè??????1??2??????′??¥?????3?3????è?¨é?¢??????èμ·??¥??¨CHROME???firefox??-??????è??è??????????ˉ??¨??¨???è??????1??????§è???????¨????????ˉ??????-Javascript?ˉ?(2.????-¥???è??è?????)???????????-?????°è??a??ScriptDOM???defer??????é????ˉ??¥??§è???????¨???????μ?è§???¨??-????????????????o§???????????·????????¨Firfox???Chrome??-???ScriptDOM??????????o§?ˉ?defer??????è????¨IE??-?????μ????????????a???????????è???§????????o§?o?èˉ¥??ˉ????-???¨??????????????aé??è|??°?deferè?????????????a???è?????è?????é?£?1???¨???è??????????§è???°±???????o?deferè??????o????

???????????¥??????????????¨???è??????????§è??é??é¢????

[1]é|?????????¨???è???????????è???¤???¨???????¨??o|???èμ·??°???è??è???????§è??????????¨????????±?o???¨???è??????????§è???????o??????????????§???è???§????è???????¨??????????1???ˉ??a??¥??????

[2]???????????¨???è??????????§è??é?o?o??????????????????§?·???????é?o?o????è????ˉ??¨???è??????????ˉ?ˉ?è???¤§???é??é¢??1???????????????????è§£??3??1????°±??ˉ?????¨???è°??????°?????????è???????????è?????????????¨?????aè????????è????????????????¨????·????????????aè????????

[3]??¨???è??????2???????????????§è???????o??????é??è??DOM???appendChild???insertBefore?-???1?3??°?script????′??·??????°DOM??-???????°±?????????è??JSè????????è??????????§è???o?èˉ¥??ˉ??¨???è???????????????????a?????o??????????μ?è§???¨?ˉ1è????a?????o????¤?????·?????ˉ?è???¤§????ˉ??|???¨IE??-????o?èˉ¥??ˉé??????°??????§è??????-???¥????1??°±??ˉ??¨???è????????????°?????ˉ?????????o??§è????£???

[4]??¨???è???????ˉè???????¨DOMContentLoadedè§|????1???????è???1??????§è?????????-¤????3????????????ˉ??|???é?????DOMContentLoaded???è????¨???è???????μ????????¨???è?????é?????é?????window.onload????????ˉ?1?????-???¨??¨???è???????¨window.onloadè§|????1??????§è????????è????????é?????window.onload

2.1Ajax?3¨??¥è??????????§è???????oé??é¢?

Ajaxè??????3¨??¥?????ˉ?????¤?§??¨???????????-¥???è?????????-¥???è?????????-¥???è??????????μ?ˉ?è???????????è???????????è???????§è?????é????????é?¢??£????????§è???????′??°?3¨??¥?????£???è¢????è???????§è??????ˉ?????????????è|?è?¨è?o????-¥?¨???????????????μ???

2.1.1 DEMO4???Ajax?3¨??¥è??????????§è??é??é¢??????¢

??????????·????3??a?¤?é?¨?????????

ajax1.js

test += "?????ˉhead?¤?é?¨AJAXè?????n";

ajax2.js

test += "?????ˉbody?¤?é?¨AJAXè?????n";

ajax3.js

test += "?????ˉ?o?é?¨?¤?é?¨AJAXè?????n";

HTML?????£?????o???

Ajax Script Test