現在、AJAXで、PHP側で、file_get_contentsしたデータを

js側に返して、innerHTMLしているのですが

file_get_contentsした、サイトのjsやcssが有効になりません。

何か、いい方法ありますでしょうか?

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2009/10/15 19:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント35pt

innerHTMLで挿入したHTMLではscriptタグやstyleタグはセキュリティなどの観点から無視されます。これを有効にすることは出来ません。

innerHTMLと比べて制限も多いですが、表示だけの問題であればAJAXではなく iframe で埋めるようにすればjavascriptもcssも動作します。

どうしてもinnerHTMLで埋めたい場合は、埋め込みたいhtmlのjsやcssを外部リソース化して、innerHTMLでhtml部をはめ込んだ後に、別途scriptタグとstyleタグを生成して元ページにappendするという形になると思います。

id:hopefully

ありがとうございます。

やってみたのですが、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

2009/10/13 17:20:40
id:GoldenDawn No.2

回答回数426ベストアンサー獲得回数81

ポイント35pt

情報が少ないので見当違いかもしれませんが……

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) ;

のような形ではどうでしょうか。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません