RT的epsilon模板header部分的错误

老师你好,现在想把网站更换为epsilon模板,但是发现某些页面的header菜单栏有个奇怪的css冲突,但是不知道该怎么修改。
网站用的是linux服务器,测试地址:http://122.32.218.37/
在主页以及大部分页面,页面向下滚动时,header菜单栏都会固定并且有背景颜色,但是某几个页面下,背景颜色却失灵了,比如http://122.32.218.37/index.php ... .html,有的甚至菜单栏的字体都变得很奇怪,比如http://122.32.218.37/index.php ... .html
我不知道如何查找问题所在,请老师帮帮忙
非常感谢!后台帐号以及管理后台通过旺汪发给您了
已邀请:

QQ被盗了

赞同来自:

老师,我想我看出了一点问题的所在,但仍然不知道怎么解决
在header正常运行的页面我看到的header的css是.layout-mode-responsive.scrolling-enable #rt-header {
background-color: #1a1a1a;
box-shadow: 0 1px 5px rgba(0,0,0,0.3&#41
color: #ffffff;
}

QQ被盗了

赞同来自:

这种悬停式顶部导航菜单的底色变换,是通过 CSS 类的切换来实现的,而 CSS 类的切换,是由 JS 来完成。
如果在页面滚动之后无法进行 CSS 类切换,首先应该怀疑是 JS 故障。
我们先研究研究,实在解决不了再找 JA 官方问问。没准不是人家模板的问题,可能是你安装的扩展导致了 JS 故障。

跑堂小2 - 冇钱;冇房子;冇成就。要吃饭;要住宿;要消费

赞同来自:

老师,根据你的提示,我想我找到问题的所在了,但是暂且仍然没有解决办法。我发现当我关掉sobipro的calendar模块时,header就能正常工作了,有什么办法能解决这个冲突呢?
我是该找模板的支持呢还是sobipro的支持呢?我已经给sobipro团队发邮件了,正在等待回复

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

你的测试完全可以证明是 sobipro的 calendar 模块与 JA 模板的 JS 有冲突。
之前我就看过文章提到,大多数日历模块都要用到一个名为 calendar.js 的文件,这个文件很容易跟其它 JS 发生冲突。
所谓“解铃还须系铃人”,要解决这个问题,恐怕得求助于 sobipro 的开发人员。

追梦人 - 梦想每个人都有,但不是每个人都有勇气去坚信,我有

赞同来自:

老师,与sobipro的支持联系过了,他们的答复如下:Honestly I'm not sure what cause exactly this conflict. For sure it is some problem between datepicker.js and scrolling-header.js file. I would say it is probably some names conflict, but I'm not able to get rid of it without rewriting one of these files.

跑堂小2 - 冇钱;冇房子;冇成就。要吃饭;要住宿;要消费

赞同来自:

刚才比较了一下你网站首页和出故障的页面的源代码,根据你提供的文件名搜索了一下页面源代码,发现网站首页没有加载 datepicker.js ,而在出故障的页面上则加载了 datepicker.js 这个文件。很明显就是这个 JS 文件与模板的 scrolling-header.js 冲突了。
但这并不表示上述哪个文件“错了”,所以不好要求哪一方的作者来“修改” —— 开源世界的很多程序员就是这样,如果你不能证明他的代码“错了”,也就无法说服他做出修改,他会认为“凭什么让我改而不是让他改”。
所以,我们还是自己尝试来解决吧。
你先做一个简单的测试:安装 JCH Optimize
来优化网站的 JS 文件,在选择“合并 JS”的同时,开启其“try-catch”选项,这样就能把每一个独立的 JS 代码都独立封装,避免冲突。试试看这样能否解决?

QQ被盗了

赞同来自:

老师,我的站点有安装 JCH Optimize 专业版,是我购买的正版,之前研究了一阵子,但实在是搞不懂怎么用,老师能帮我看看么?怎么能让他“把每一个独立的 JS 代码都独立封装”
谢谢~!!

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

貌似通过 jQuery Easy 插件也解决不了。
我刚刚通过 Chrome 浏览器的开发者工具查看了出问题的页面,发现有出错提示,提示消息是:Uncaught TypeError: body.getScroll is not a function

QQ被盗了

赞同来自:

确实是啊,看来就是这个部分和那个datepicker.js有冲突,其他页面就没有报错。
希望官方能尽快修复。
辛苦老师了,十分感谢

刘备曹操 - 古今多少事,都付谈笑中

赞同来自:

RT 官方回复了,他们说并不是他们的代码错了。目前无法知道是哪个第三方扩展导致错误,所以建议可以通过修改模板的 index.php 文件来解决。
回帖原文如下:Just because the error appears in our JS program it doesn't mean that is the cause - there is a clash going on somewhere with one of your many third-party products - which one I don't know.
So, my only other suggestion is to eliminate the JS where the error manifests itself. To that end try removing lines 65 through 67 in /templates/rt_epsilon/index.php (remember though that if you do this any template update will reinstate this code again).
我建议你试试这个方案。同时,继续跟 sobipro 官方联系,毕竟跟他们的日历模块很有关系。

跑堂小2 - 冇钱;冇房子;冇成就。要吃饭;要住宿;要消费

赞同来自:

65到67的代码就是加载那个scrolling-header.js插件的if ( ( ($gantry-get('header-type') == 'fixed') && $gantry-get('layout-mode')=="responsive") ){
$gantry-addScript('scrolling-header.js'&#41
}

跑堂小2 - 冇钱;冇房子;冇成就。要吃饭;要住宿;要消费

赞同来自:

最好告诉他们是和datepicker.js有冲突,这样可以有的放矢,我正在和sobipro他们联系,看看怎么说

赤木@晴子 - 明月百年心

赞同来自:

我在 RT 官方论坛发帖时当然提到了是与datepicker.js 有冲突。但是 RT 仍然认为自己的 JS 文件没有问题。
如果 RT 给出的方案只能导致导航菜单背景颜色不再变化,是否可以考虑,给导航条本来的背景颜色就定义成黑色?这样可以一直保持突出显示。
当然,如果 datepicker.js 文件的作者能找到自己代码中(可能存在)的问题并改进代码,那就再好不过了。

刘备曹操 - 古今多少事,都付谈笑中

赞同来自:

我发现双击那个错误可以展开得到如下信息:Uncaught TypeError: body.getScroll is not a function
scrollingHeader @ scrolling-header.js:5
m @ mootools-core.js:118

QQ被盗了

赞同来自:

我刚刚检查了
RT Epsilon 模板的官方演示
,查看页面源代码,并没有发现加载任何 mootools 脚本的代码。这可以证明,你网站上如果加载了 mootools,那么应该是某个第三方扩展加载了,而不是 epsilon 模板加载了。
你可以尝试找出这个第三方扩展,然后禁止它加载 mootools,或者直接禁用该扩展,再试试看,是否 JS 冲突就消失了?

QQ被盗了

赞同来自:

sobipro团队回信了,他们真是热心,他帮我从新写了scrolling-header.js,现在页面已经完全正常了。The problem is, that these both files are OK, but from some reason there appear names conflict where are loaded together. Biggest pain is that this scrolling script is mootools based, which always generated lot of problems with jQuery, and is already removed from Joomla! core. I'm not sure why guys from Rockettheme use it, but probably they had own reasons for this.
I think in your situation, easiest solution would be creating new script for scrolling function which would be based on jQuery instead mootools. This should fix the problem.
I already created such function for you:jQuery(window).scroll(function (event) {
var height = jQuery(window).scrollTop(&#41

if(height 0) {
jQuery('body').addClass( 'scrolling-enable' &#41
}
if(height == 0 && jQuery('body').hasClass('scrolling-enable')) {
jQuery('body').removeClass( 'scrolling-enable' &#41
}
}&#41

孤独者 - 世界属于那些勤于思考的人,更属于那些善于行动的人

赞同来自:

呵呵,我要把这个回复贴到 RT 论坛去,没想到是这样的结局啊……
很高兴问题终于解决了。我也要感谢 sobipro 的开发团队这么热心帮忙检查代码。

要回复问题请先登录注册