Joomla模块碰撞Uncaught TypeError

时间:2014-03-13 15:51:39

标签: javascript php joomla

我有一个我正在研究的测试网站,基本上是一个网站的模型。我安装了两个扩展。一个是RokSprocket,另一个是Responsive contact form

现在,当我禁用联系表单模块时,roksprocket标签工作正常。但是当我启用它时,它们就会停止工作。 我检查了控制台,我有这个错误:

Uncaught TypeError: Object [object Object] has no method 'getCoordinates'
    yjresponsive.js:72
    size_menu yjresponsive.js:72
    (anonymous function) yjresponsive.js:35
    (anonymous function) mootools-core.js:121
    (anonymous function) mootools-core.js:5
    Array.implement.each mootools-core.js:9
    invoke.fireEvent mootools-core.js:120
    j mootools-core.js:175

从检查第一个错误是在(第72行代码)

function size_menu() {

    if ($('mmenu_holder')) {
        if (Browser.name == 'ie' && (Browser.version == 7 || Browser.version == 8)) {
            var size = document.documentElement.clientWidth;
        } else {
            var size = window.getScrollSize().x;
        }

        var all_li = $$('ul.menunav li');

        if (all_li.length > 0) {
            var tops = all_li[0].getSiblings();
            var tops_count = tops.length + 1;
            var width = tops.getWidth().sum() + all_li[0].getWidth();
            var menu_width = $('topmenu_holder').getCoordinates().width;
        }

        if (size < 980) {
            $$('.top_menu,.top_menu_poz').removeClass('showmenu');
            $$('#mmenu_holder').setStyle('display', 'block');
        } else {
            $$('#mmenu_holder').setStyle('display', 'none');
            $$('.top_menu,.top_menu_poz').addClass('showmenu');
        }
        if (size > 980) {
            $$('#mmenu_holder').setStyle('display', 'none');
            $$('.top_menu,.top_menu_poz').removeClass('showmenu');
        }

    }
}

35岁的那个是

window.addEvent('domready', function () {
    showmenu();
    size_menu();
    if ($('logo')) {
        logo_size();
    }

});

mootools只是一个标签:\

那是什么导致了这个错误?我对JavaScript的了解是不存在的:S

我发信息支持roksprocket,但是他们也指出了那个错误,仅此而已......

我在Joomla 3.2.3上。使用yougrids模板。

1 个答案:

答案 0 :(得分:1)

响应式联系表单模块将jQuery引入您的模板。该模块包含一个名为“mod_responsive_contact_form.php”的文件,其中包含以下行:

$document->addScript('//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');

这会导致与MooTools也使用的变量$发生冲突。要解决此问题,您需要修改'mod_responsive_contact_form.php'。我对Joomla一无所知,或者跟我有什么关系。

在上面一行的下方添加以下库,以便jQuery可以继续使用$

$document->addScriptDeclaration('jQuery.noConflict();');

之后,您需要修改以下行:

$document->addScriptDeclaration('$(function () { $("input,select,textarea").not("[type=submit]").jqBootstrapValidation(); } );');

$document->addScriptDeclaration('jQuery(function () { jQuery("input,select,textarea").not("[type=submit]").jqBootstrapValidation(); } );');

这可以消除您遇到的错误。