javacriptインクルードファイルにasync属性を追加したいのですが、ユーザーエージェントが特定の文字列と一致する場合にのみ追加します。条件付きでJSファイルをdocument.writeなしで含める
ページが "サーバー側にキャッシュされている可能性があります"ので、私はこのサーバー側を実行できません。したがって、javagriptでユーザーエージェントを検出してそれに応じて非同期にする必要があります。
は現在、私はそれをこのようにやっている:
<script id="myscript" type="text/javascript">
if(navigator.userAgent.match(/development/i)){
document.write("<script type='text\/javascript' src='\/\/localhost\/static\/js\/header.min.js' async><\/script>\n");
} else {
document.write("<script type='text\/javascript' src='\/\/localhost\/static\/js\/header.min.js'><\/script>\n");
}
</script>
私は今達成したい何を、ユーザエージェントならば、おそらくちょうど非同期属性を追加し、何か他のものとのdocument.writeを交換にあります私の文字列にマッチして、そのユーザーエージェントのために非同期に読み込ませます。
私はそれを元に戻すことも考えました。したがって、デフォルトでは、非同期でタグをロードし、ユーザーエージェントが自分の文字列と一致しない場合は削除します。
これも実際にファイルを非同期にロードするようには見えませんか?
<script id="myscript" src="//localhost/static/js/header.min.js"></script>
<script type="text/javascript">
if(navigator.userAgent.match(/development/i)){
document.getElementById("myscript").setAttribute("async", "async");
}
</script>
私はまた、他のいるUserAgentに遮断するレンダリング滞在し、スクリプトをHTMLで表示される正確な場所でこれを追加するスクリプトが必要。 は、私は、これはどちらか動作しませんと信じて:
var scriptEle = document.createElement("script");
scriptEle.setAttribute("type","text/javascript");
scriptEle.setAttribute("src","//localhost/static/js/header.min.js");
if(navigator.userAgent.match(/development/i)){
scriptEle.setAttribute("async","async");
}
document.getElementsByTagName("head")[0].appendElement(scriptEle);
誰かが良いアイデア...感謝を持っているので、もし私は、javascriptを持つので、熟練していませんよ。
その後「非同期」属性を追加するには、実際に役に立たない、あなたがラインに到達_then_それは非同期にロードするように指示しています:) –
ここでは、document.createElement( 'script')を使用してsrc属性を与え、それをドキュメントに追加することだけが他の唯一のオプションだと確信しています。 – SethWhite