js側に返して、innerHTMLしているのですが
file_get_contentsした、サイトのjsやcssが有効になりません。
何か、いい方法ありますでしょうか?
innerHTMLで挿入したHTMLではscriptタグやstyleタグはセキュリティなどの観点から無視されます。これを有効にすることは出来ません。
innerHTMLと比べて制限も多いですが、表示だけの問題であればAJAXではなく iframe で埋めるようにすればjavascriptもcssも動作します。
どうしてもinnerHTMLで埋めたい場合は、埋め込みたいhtmlのjsやcssを外部リソース化して、innerHTMLでhtml部をはめ込んだ後に、別途scriptタグとstyleタグを生成して元ページにappendするという形になると思います。
情報が少ないので見当違いかもしれませんが……
IE では style や script の innerHTML は読み込み専用であり、書き換えはできません。
Ajax ではなく
var newScript = document.createElement('script') ; newScript.type = 'text/javascript' ; newScript.src = './get_script.php' ; document.getElementsByTagName('head')[0].appendChild(newScript) ;
のような形ではどうでしょうか。
ありがとうございます。
やってみたのですが、IEだと上手く動きません・・
外部jsファイルを読み込む為に以下のような記述をしました。
http://test.com/aaaa/test.jsの中身は単なる
alert(test_ok);
しか記述がないです。
aaa.jsの中身は
deferLoader('http://test.com/aaaa/test.js');
function deferLoader(filepath,callback){
var sc = document.createElement('script');
sc.setAttribute('defer', true);
sc.type = 'text/javascript';
window.external_script_onload = filepath;
sc.src = filepath;
document.body.appendChild(sc);
}
ただし、IE7で実行すると、上手く行きません。
ブラウザがすぐビジー状態になってしまう。
ついでに、window.external_script_onload
ってどういううごきなんですかね?
以下のページを参考にしているのですが
いまいちわかりません。
http://d.hatena.ne.jp/os0x/20080827/1219815828