2010-03-25 2 views
1

Я только что установил fancybox на своем сайте, и он отлично работает в firefox, но когда я пробую его в хроме и сафари, fancybox не центрируется в окне браузера.jQuery fancybox плагин не сосредоточен в сафари или хром, но находится в firefox

Любые идеи?

Вы можете посмотреть демо на:

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

+0

теме, но некоторые из ссылок не работает – 2010-03-26 00:30:40

ответ

0

Ненависть ответить на мой собственный вопрос, но, возможно, это поможет другим из. Я добавил обертку к моему контенту, и теперь он отлично работает.

+1

Можете ли вы прокомментировать немного больше о том, как именно вы кладете обертку? вы можете отправить фрагмент кода, пожалуйста? – basZero

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() ]; 
}, 
...... 
+0

спасибо за это решение, однако вы должны использовать опцию кодирования для прошлых образцов кода, потому что он нечитабелен + вы потеряли связь. – Mermoz

+0

'$ (window) .height()' возвращает высоту документа вместо высоты окна [если документ загружен в режиме Quirks] (http://viralpatel.net/blogs/jquery-window-height-incorrect/) , –

+0

Спасибо за фрагмент выше. Тем не менее, он решает проблему только того, что фотография теперь правильно центрируется на экране. Fancybox-overlay (полупрозрачная коробка за изображением) все еще не на 100% экрана. Любые другие корректировки, которые должны быть сделаны? – basZero

7

Ответ выше не работает для меня. Я только что использовал $.fancybox.center(true);, чтобы устранить проблему при открытии fancybox. Раньше лишь иногда он центрировался. Или он будет сосредоточен после изменения размера окна просмотра. Редактировать: Я думаю, эта ошибка немного отличается от той, что была в вопросе, так как она встречается в firefox, IE, chrome, все.

$('a.whatever').fancybox({ 
    //Your options here... 
    onComplete: function(links, index) { 
    //leave this at the bottom 
    $.fancybox.center(true); 
    } 
}); 
+0

в последнем fancybox Я думаю, что новый метод $ .fancybox.reposition() – vaskort

2

Я также с помощью FancyBox 1.3.4 и разрешить, я сделал что-то похожее на то, что было предложено выше, однако, функция была немного отличается в 1.3.4 - только в случае, если есть какие-либо вопросы относительно того, почему я «Не использовать Fancybox 2 - это просто из-за новой лицензии. Надеюсь, что это помогает:

_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 
    ]; 
}, 
+0

Спасибо, что сэкономил мое время. Отрывок работает. – michalzuber

+0

Мое удовольствие! Рад, что это помогло. –