IE 6, IE7, IE 8 でキャッシュしておいた文字列を、動的に生成した script 要素に設定し、文字列を JavaScript として評価する方法
IE 8 で文字列から動的に script 要素を生成したい時もあると思います。
オフラインにキャッシュしておいた文字列を JavaScript として評価したい場合などです。
こうすると動作します
IE6 ~ IE8 専用です。
var script = document.createElement("script"); document.getElementsByTagName("head")[0]).appendChild(script); script.outerHTML = ' <script defer="defer">' + jsExpression + '</script>';
document.createElement("script") でダミーの(プレースホルダの) script 要素を作り、そのあとで outerHTML で上書きしています。
これでも良いようです
script.text に文字列を代入すると、JavaScript として評価されます。
var script = document.createElement("script"); document.getElementsByTagName("head")[0]).appendChild(script); script.text = jsExpression;
モダンブラウザなら
IE6~IE8 以外のブラウザならこれでいけます。IE9 でも動きます。
document.head がない環境では、document.getElementsByTagName("head")[0]) から head 要素を取ってください。
var script = document.createElement("script"); script.charset = "utf-8"; document.head.appendChild(script); script.textContent = jsExpression;
x3.js では調査した全てのブラウザで動作する script.text = ... を採用しています。