Jquery ui,joomla和safari问题

时间:2010-01-22 14:33:06

标签: jquery jquery-ui safari joomla google-chrome

我有一个jquery ui滑块,可以在移动时滚动div的内容,这里是代码:

    var paraHeight = $("#descPara").height();
    var maxScroll = paraHeight - 250;
    var activeScroll;
    if (maxScroll <= 0){

        //do nothing    

    } else {

        $("#slider2").slider({

            orientation: "vertical",
            min: 0,
            animate: true,
            max: maxScroll,
            value: maxScroll,
            slide: function(event, ui) {
                $("#descPara").stop().animate({'bottom': (-ui.value + maxScroll) + 'px'}, 1000);
            }
        });

    }

这适用于Firefox,但不适用于Safari / Chrome。在Safari和Chrome中发生的情况是,页面加载时滑块的句柄不存在,直到您单击滑块轨道并且当它出现时无法拖动时,您仍然可以通过单击滑块轨道滚动。

然而,这个问题只有在cms joomla中使用时才会出现,在这个cms之外,它在所有浏览器中都能很好地运行。怪异。

有没有人有类似的问题?这真的很有帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

Joomla经常包含mootools作为帮助你的方式以及一些简单的javascript内容。其中一个重要问题是,当使用jQuery时, $ 别名是为mootools而不是jQuery保留的。以下是一些解决方案。

选项1:

如果您知道仍需要mootools,请修改调用jQuery的代码以使用 jQuery()函数而不是 $()。像这样:

var paraHeight = jQuery("#descPara").height();
...
jQuery("#slider2").slider({
    orientation: "vertical",
    min: 0,
    animate: true,
    max: maxScroll,
    value: maxScroll,
    slide: function(event, ui) {
        jQuery("#descPara").stop().animate({'bottom': (-ui.value + maxScroll) + 'px'}, 1000);
    }
});

选项2:

摆脱mootools。这是PHP的修复。您可以使用它来阻止mootools输出到网页(以及随后干扰您的jQuery。):

<?php
$user =& JFactory::getUser();
if ($user->get('guest') == 1) {
    $headers = $this->getHeadData();
    $headers['scripts'] = array();
    $this->setHeadData($headers); 
}
?>