【问题标题】:Disable JS script in Joomla 2.5在 Joomla 2.5 中禁用 JS 脚本
【发布时间】:2014-03-28 12:18:09
【问题描述】:

我使用的是 Joomla 2.5.19,并且我已经删除了 Mootools,因为它会与 JQuery 产生冲突。我还禁用了 caption.js。

现在,在每个页面的头部部分都添加了以下脚本:

<script type="text/javascript">
window.addEvent('domready', function() {
            $$('.hasTip').each(function(el) {
                var title = el.get('title');
                if (title) {
                    var parts = title.split('::', 2);
                    el.store('tip:title', parts[0]);
                    el.store('tip:text', parts[1]);
                }
            });
            var JTooltips = new Tips($$('.hasTip'), { maxTitleChars: 50, fixed: false});
        });
  </script>

这是抛出错误:

Uncaught TypeError: Object [object global] has no method 'addEvent' 

我该如何摆脱它?

我按照here的说明删除了:

JHtml::_('behavior.caption');

来自components/com_content/controller.php

但没有运气。我也试过包括unset($this-&gt;_scripts['/media/system/js/caption.js']);

我该如何摆脱它?

【问题讨论】:

  • 如果我没记错的话,工具提示要么通过核心库文件或布局导入。我会小心地完全禁用 JS,因为某些 Joomla 功能需要它
  • 我只在主页禁用了它。

标签: php joomla joomla2.5


【解决方案1】:

你不应该删除 Mootools,如果有冲突,你可以使用 jQuery Easy 插件。访问http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18327

【讨论】:

  • 是的,这就是我用来删除 mootools 的插件。不过,它不会删除上述脚本。
【解决方案2】:

我已经设法删除了脚本:

<?php


// Custom script
    $document =& JFactory::getDocument();

    // Remove call to JTooltips
    $document->_script = preg_replace('window\.addEvent\(\'domready\',\s*function\(\)\s*{\s*\$\$\(\'.hasTip\'\).each\(function\(el\)\s*{\s*var\s*title\s*=\s*el.get\(\'title\'\);\s*if\s*\(title\)\s*{\s*var\s*parts\s*=\s*title.split\(\'::\',\s*2\);\s*el.store\(\'tip:title\',\s*parts\[0\]\);\s*el.store\(\'tip:text\',\s*parts\[1\]\);\s*}\s*}\);\s*var\s*JTooltips\s*=\s*new\s*Tips\(\$\$\(\'.hasTip\'\),\s*{\s*maxTitleChars:\s*50,\s*fixed:\s*false}\);\s*}\);', '', $document->_script);


?>

感谢post.

【讨论】:

    【解决方案3】:

    如果您正在开发自己的扩展,则确实不需要删除 Mootools 或使用第三方扩展来加载 jQuery。 Mootools 在 Joomla 中被大量使用,尤其是 2.5.x 版本;因此删除它可能会对使用核心功能时的预期行为产生不利影响。如果您需要使用 jQuery,只需将任何 jQuery 代码包装在 IIFE 周围,如下所示:

    function($) {
    
        // jQuery code goes here
    
    })(jQuery);
    

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多