
いつも参考にさせていただいてます。
greyboxを使ってページを表示したいのですが、
使っているサーバーはjsファイルなどがアップロードできない、CMSサービスのサイトなので、
別のレンタルサーバーにアップロードしたjsファイルを読み込んで動かしたところうまくいきません。
模範例では、
-----------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<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="greybox/AJS.js"></script>
<script type="text/javascript" src="greybox/AJS_fx.js"></script>
<script type="text/javascript" src="greybox/gb_scripts.js"></script>
</head>
<body>
<h1>GreyBox サンプル</h1>
<a href="http://job.mycom.co.jp/" title="job" rel="gb_page[480,360]">
毎日就職ナビのページ表示
</a>
</body>
</html>
-----------------------------------
なのですが、パスを絶対パスに変えて
-----------------------------------
<link rel="stylesheet" href="http://mydomain/greybox/gb_styles.css" type="text/css" media="all">
<script type="text/javascript"><!--
var GB_ROOT_DIR = "http://mydomain/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="greybox/http://mydomain/gb_scripts.js"></script>
-----------------------------------
と変更しました。
成功例(jsファイル同一サーバー上):http://greybox.main.jp/test_ng/index2.html
失敗例(jsファイル別サーバー上):http://greybox.main.jp/test_ok/index1.html
対応方法をお教え下さい。よろしくお願い致します。
No.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>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jqueryにて
-
マスターページでのJavaScriopt...
-
jqueryを2つ設置した事で片方...
-
ASP.NETでAjax通信する際について
-
scrollsmoothly.jsが動かない
-
<a href="#" …>の意味を教えて...
-
SQLのWHEREで全てを質問する方法
-
HTMLソースからURLだけを抜き出...
-
javascriptでalertの文字列をコ...
-
ウインドウの後ろに隠れている...
-
bodyにidをつける理由は何ですか?
-
ユーザーが更新ボタンを押さな...
-
出荷予定日を表示するJavaスク...
-
ポップアップウインドウを開い...
-
JavaScriptのエラー ( 関数の...
-
楽天商品検索APIをjavascriptで...
-
指定の年月日時にcssを自動で切...
-
bodyタグのfocus
-
HTMLでのブラウザタブの制御
-
メールフォームとかで確認画面...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サイトにアクセスした際、数秒...
-
jqueryプラグインの設置方法
-
javascriptの中でjavascriptを...
-
教えてください! lightboxとsk...
-
liteboxと滑らかスクロールが同...
-
補足です。
-
マウスオーバー+クリカブルマッ...
-
<head>外での、外部css、外部js...
-
jQuery UIのdraggableについて
-
base64encodeでの文字化けについて
-
document.lastChild.appendChil...
-
HTMLに記載したいjavascript
-
jQuery.lightpop.jsの動作について
-
Camera slideshowの使い方について
-
ライブラリについて
-
jqueryのcolorboxを読込直後に...
-
CrossSlideのスライドショーが...
-
thickboxで画像ギャラリーが表...
-
noscript内にlinkは間違い?
-
wordpressでJavascriptのフラッ...
おすすめ情報