爲什麼像Google和Facebook這樣的服務使用document.createElement('script')
而不是<script>
?document.createElement('script')vs <script src =「」>
的谷歌Analytics(分析)片段:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
可以寫成剛:
<script src="//www.google-analytics.com/ga.js" type="text/javascript"></script>
和Facebook的喜歡按鈕:
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=xxx";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
可以簡化爲只:
<script src="//connect.facebook.net/en_GB/all.js#xfbml=1&appId=xxx"></script>
我知道這裏有一些安全的玩法,但除此之外,我不明白爲什麼我們不應該使用HTML5?
第一個(谷歌)不,它不能爲ssl的url不同。而這個語法只能用於javascript,所以如果客戶端沒有js或者它被停用,那麼就不會有資源請求。 –
'// www.google-analytics.com/ga.js'可以通過'http'和'https'使用,如果禁用JavaScript,'',甚至可能將其放在頁面的底部。 – webjay
@webjay另請注意,facebook腳本包含其他邏輯:它會檢查腳本是否已添加到頁面,如果是這種情況,請不要再添加腳本。 – bfavaretto
是的,甚至不必在底部! –