まず、再現コード
1、gb2312.html を見てみましょう。ファイルは gb2312
🎜>
<ボディ><ボタンonclick="loadJS('utf8.js', 'utf-8')>テストボタン>関数loadJS(src, charset ) {
var script = document.createElement('script');
script.charset = charset;
var head = document.getElementsByTagName ('head')[0];
head.appendChild(script);
2. utf8.js ファイルのエンコーディングは utf-8 です
コードをコピーします
コードは次のとおりです:
var p = document.createElement('p');
p.innerHTML = 'IE キャッシュにより文字化けが発生する'; document.body.appendChild(p); 🎜>
loadJS 関数のダイナミクス スクリプトを作成し、src、charset を設定して head に追加します。ここのボタンをクリックするたびに、utf8.js がページに導入され、utf.js 内のコードによってテキストを設定する p 要素が作成され、それが本文に追加されます。
動的に作成されたscriptタグではなく、HTMLページ上に直接記述した場合はこのような問題は発生しません。
コードをコピー
コードは次のとおりです:
document.write を使用して JS リソースをロードする場合、このバグは発生しません
<script> ) { <br> var str = '<script type="text/javascript"' ' src="' url '" charset="' charset '"><' '/script>'; .write(str) ; <br>} </div></script>
loadByWrite('utf8.js', 'utf-8')
コードをコピーします
コードは次のとおりです。
script.charset = charset; script.src = src;
つまり、最初に charset に値を割り当てます。