非同步載入js不允許使用document write的解決方法

空白_回憶發表於2017-07-13

非同步載入js不允許使用document write的解決方法

給大家推薦一個吸貓網站:愛貓族http://15cat.com),希望大家喜歡

程式碼:
var scriptFile = document.createElement('script');

scriptFile.setAttribute("type","text/javascript");

scriptFile.setAttribute("src",'http://api.map.baidu.com/api?type=quick&ak=o9B4Ol99j9NcBXSu5nFTR7uI&v=1.0');

document.getElementsByTagName("head")[0].appendChild(scriptFile);

最後要新增到head裡的時候,chrome出現以下警告:
Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.
這怎麼回事,何解?

PS:chrome中console裡的錯誤(一個紅色錯號)會阻止錯誤之後的指令碼執行,警告(黃色歎號)只是被警告的地方不會執行。

解決方法:

出現這個的原因是引入的程式碼中包含了document.write方法,非同步載入的js是不允許使用document.write方法的。
因為document已經載入解析完畢,文件流已經關閉了
所以你非同步載入的js不可以再往document裡寫東西了,比如使用document.write
所以直接引入兩個連結就可以了:
var usel = '<script src="';
    usel += gds[0].imageurl;
    usel += '"></script>';
    document.write(usel);

相關文章