1

ファンシーボックスを自分のサイトにインストールしたところ、Firefox では完全に動作しますが、クロムとサファリで試してみると、ファンシーボックスがブラウザー ウィンドウの中央に配置されません。

洞察はありますか?

次の場所でデモを表示できます。

http://kotyy.com/kotyy/lindseyandasp/test2.xhtml

4

5 に答える 5

7

ライトボックス 1.3.1 と jquery 1.4.2 を使用して、同じ問題が発生しました。

コードを少し調べたところ、fancybox_get_viewport 関数に問題があることがわかりました。$(window).width() と $(window).height() を使用して現在のビューポートを決定します。問題は、Chrome と Safari では、この関数がドキュメントの幅と高さを返すことです。Opera でも、 http: //updatepanel.net/2009/02/20/getting-the-page-and-viewport-dimensions-using-jquery/を参照してください。

回避策は簡単です。使用するwindow.innerHeight ? window.innerHeight : $(window).height();

これが変更された関数です。jquery.fancybox-1.3.1.js で置き換えます。

fancybox_get_viewport = function() {
    return [ (window.innerWidth ? window.innerWidth : $(window).width()), 
         (window.innerHeight ? window.innerHeight : $(window).height()),
         $(document).scrollLeft(), $(document).scrollTop() ];
},
......
于 2010-08-04T16:12:26.910 に答える
7

上記の答えは私にはうまくいきませんでした。$.fancybox.center(true);ファンシーボックスが開かれたときの問題を修正するために使用しました。ときどきそれが中心になる前に。または、ビューポートのサイズを変更した後に中央に表示されます。編集:このバグは、Firefox、IE、Chrome、すべてで発生するため、問題のバグとは少し異なると思います。

$('a.whatever').fancybox({
  //Your options here...
  onComplete: function(links, index) {
    //leave this at the bottom
    $.fancybox.center(true);
  }
});
于 2011-09-15T02:27:01.287 に答える
2

私は Fancybox 1.3.4 も使用しており、解決するために、上記の提案と同様のことを行いましたが、機能は 1.3.4 ではわずかに異なっていました。それは単に新しいライセンスのためです。お役に立てれば:

_get_viewport = function() {
    return [
        (window.innerWidth?window.innerWidth:$(window).width()) - (currentOpts.margin * 2),
        (window.innerHeight?window.innerHeight:$(window).height()) - (currentOpts.margin * 2),
        $(document).scrollLeft() + currentOpts.margin,
        $(document).scrollTop() + currentOpts.margin
    ];
},
于 2013-06-18T17:51:29.640 に答える
0

自分の質問に答えるのは嫌いですが、別の質問に役立つかもしれません。コンテンツにラッパーを追加しましたが、現在は正常に動作しています。

于 2010-03-26T00:21:48.607 に答える