- ベストアンサー
Javascriptの外部サーバーからの読み込み(greybox)
- Javascriptの外部サーバーからの読み込み(greybox)に失敗する問題の対応方法を教えてください。
- Javascriptの外部サーバーからの読み込み(greybox)に関する問題があります。対応方法を教えてください。
- Javascriptの外部サーバーからの読み込み(greybox)について、サーバー上のjsファイルを読み込む方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
失敗している原因は、クロスドメインの制約によるものです。 別サーバのgreyboxを呼び出しているサーバをサーバ1、別サーバをサーバ2として、 具体的に何が起こっているかを説明しますと、 1.サーバ1のHTMLファイルのリンクをクリックした時にサーバ2のgb_script.js内でiframe要素が作られる 2.iframe要素のsrc属性は、サーバ2のloader_frame.html(greyboxフォルダ内にあります) 3.サーバ2のloader_frame.htmlの7行目でparent.GB_CURRENTにアクセス ここで、parentはサーバ1のwindowオブジェクトになりますが、クロスドメインの制約により 別サーバのwindowオブジェクトにアクセスすることができません。 なので、loader_frame.html内でGBオブジェクトが作成されず、gb_urlにも値が入らないので サーバ1のHTMLファイルで指定したURLにジャンプすることができません。 つまり、loader_frame.htmlファイルが別サーバに置かれているとダメなわけです。 gb_script.jsを見てみると、loader_frame.htmlのパスはGB_ROOT_DIRとなりますので、 greyboxフォルダのJavaScriptファイル以外をサーバ1にも置いて、 GB_ROOT_DIRにサーバ1のgreyboxフォルダを指定してやれば動くようになります。 サーバ2には、greyboxフォルダのJavaScriptファイルのみでOKです。 長くなってしまいましたがまとめますと、同一サーバにgreyboxのJavaScriptファイル以外を置いて、 別サーバにgreyboxのJavaScriptファイルだけを置いて、以下のコードを書けば動きます。 (gb_styles.cssを別サーバに置いた場合はそのURLを指定してください。) <link rel="stylesheet" href="greybox/gb_styles.css" type="text/css" media="all"> <script type="text/javascript"><!-- var GB_ROOT_DIR = "./greybox/"; // --></script> <script type="text/javascript" src="http://mydomain/greybox/AJS.js"></script> <script type="text/javascript" src="http://mydomain/greybox/AJS_fx.js"></script> <script type="text/javascript" src="http://mydomain/gb_scripts.js"></script>
お礼
検証が遅れ、お礼が遅くなり申し訳ありません。 おかげさまで解決致しました。 ありがとうございました。