4

ツイートボタンFacebookのようなウィジェットはどちらも、HTMLに次のようなものを追加するように指示します。

<script>
!function(d,s,id){
    var js,fjs=d.getElementsByTagName(s)[0];
    if(!d.getElementById(id)){
        js=d.createElement(s);
        js.id=id;
        js.src="https://platform.twitter.com/widgets.js";
        fjs.parentNode.insertBefore(js,fjs);
    }
}(document,"script","twitter-wjs");
</script>

<script>DOMに要素を動的に追加し、実際のウィジェットJavaScriptをロードします。このようにウィジェットを直接ロードするのではなく、動的にこれが行われるのはなぜですか(これはよりシンプルでクリーンです):

<script src="https://platform.twitter.com/widgets.js"></script>

私が考えることができる唯一の理由は、ページがロードされるまでスクリプトのロードを延期することですが、これは<script>、閉じる直前に配置することで同じように簡単に実行できます</body>

4

2 に答える 2

1

このコードを実装する人々は、スクリプトを適切な場所に配置するのに十分な能力があるとは保証できないためです。さらに、スクリプトは理想的には十分に普遍的であり、どのシステムを使用していても誰でも簡単に実装できます。

一部のCMSでは、スクリプトをページに追加する場所をきめ細かく制御できません。より多くの人々がより少ない混乱で使用できるコードを提供することは、ソーシャルネットワークの最大の利益です。

于 2013-02-07T03:20:14.350 に答える
0

このようなスクリプトを追加すると、非同期で読み込まれ、残りのHTMLの読み込みがブロックされることはありません。<script>に追加されたタグだけの場合<head>、スクリプトの読み込みが完了するまでHTMLの残りの部分は解析されないため、ユーザーエクスペリエンスが低下する可能性があります。<script>ただし、直前にブロックを追加した場合は、非同期でロードした場合とほぼ同じ結果が得られます</body>

(私はそれがzzzzBovが「正しい場所」によって意味するものだと思います。)

于 2013-02-07T03:25:00.947 に答える