人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

現在、AJAXで、PHP側で、file_get_contentsしたデータを
js側に返して、innerHTMLしているのですが

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

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

●質問者: hopefully
●カテゴリ:就職・転職 ウェブ制作
✍キーワード:Ajax CSS js PHP サイト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y-kawaz
●35ポイント

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

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

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

◎質問者からの返答

ありがとうございます。

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


2 ● GoldenDawn
●35ポイント

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ