0

I'm using Fancybox 1.3 I need to be able to redirect www.domain.com/inner.html to www.domain.com/index.html and open the inner.html page in Fancybox. How can I achieve this simply? Thank you.

4

1 に答える 1

1

1)。inner.htmlファンシーボックス内で開かれたかどうかを評価するスクリプトを内部に記述する必要があります。次に、fancybox の外で開いた場合はリダイレクトします .... しかし、リダイレクトから来ている場合は fancybox を開くindex.htmlように指示する必要もあり、それ以外の場合は通常どおりに開きます (fancybox ではありません) 。index.htmlindex.html

内部inner.htmlには、少なくとも次のものが必要です。

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
if(!parent.jQuery().fancybox) {
 alert("opened OUTSIDE of fancybox");
 // redirect to index.html and set the hash value to "inner"
 window.location = "http://domain.com/index.html#inner"
}
</script>

2)。ここで、リダイレクトの結果からページが開かれたかどうか (URL に「#inner」がある)を内部index.htmlで評価する必要があるため、ページの読み込み時に fancybox でページが開かれます。そうでない場合は、通常どおりに開きます (URL が持っていない、または「#inner」以外を持っている)hashinner.htmlhashhash

また、すべての fancybox js および css ファイルと、少なくとも次の html をロードする必要があります。

<a class="fancybox" href="http://domain.com/inner.html">open inner page</a>

そしてこのスクリプト:

<script>
 $(document).ready(function(){
  $(".fancybox").fancybox({
   "width": 830, // or whatever
   "height": 320,
   "type": "iframe"
  });
  // check hash
  if(window.location.hash){
   var url = window.location.hash, thisHash = new Array();
   // extract hash from URL
   thisHash  = url.split("#",2); 
   if(thisHash[1] == "inner") {
    alert("the hash is inner");
    // hash = "inner" so open "inner.html" in fancybox
    $(".fancybox").trigger("click");
   }
  }
 });//ready
</script>

parentfancybox 変数を ( のように)評価するには、とinner.htmlの両方が同じドメインに属している必要があることに注意してください。詳細については、同じオリジン ポリシーを確認してください。inner.htmlindex.html

于 2012-06-26T19:35:57.207 に答える