【发布时间】:2014-07-31 19:22:56
【问题描述】:
我在(使用 wordpress)header.php 中有一个脚本,如下所示:
window.addEventListener("DOMContentLoaded", function(event) {
fixedMenu.init("header-container", 0);
fixedMenu.init("event-type-wrapper", 20);
window.addEventListener('scroll', function(fid){
fixedMenu.top("header-container");
fixedMenu.top("event-type-wrapper");
});
var sessionvar = "<?php echo $_SESSION['lang'] ?>";
});
在这个脚本之后,我包含一个更长的脚本,带有 script scr="" 标签。
在那个脚本中我有
window.addEventListener("DOMContentLoaded", function(event) {
todays = document.getElementById("todays-events");
upcomming = document.getElementById("upcomming-events");
past = document.getElementById("past-events");
texter = document.getElementById("event-type");
changeMessage();
});
它在任何 webkit 浏览器中都可以正常工作,代码已启动,但 firefox 不加载第二个事件侦听器(我不知道如何调试它是否加载,但我在网页中看不到结果) .
有什么想法吗?
更新
如果有需要,这里是通过 script src=嵌入的脚本的完整源代码
var todays;
var upcomming;
var past;
var texter;
window.addEventListener("DOMContentLoaded", function(event) {
todays = document.getElementById("todays-events");
upcomming = document.getElementById("upcomming-events");
past = document.getElementById("past-events");
texter = document.getElementById("event-type");
changeMessage();
});
window.onscroll = function(){
changeMessage();
}
function isElementInViewport (el) {
var rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= document.body.scrollHeight &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
);
}
function changeMessage(){
if(texter && todays && isElementInViewport(todays)){
texter.textContent = returnString("Šiandien", "Today", "Сегодня");
}
else {
if(texter && upcomming && isElementInViewport(upcomming)){
texter.textContent = returnString("Artėjantys","Upcomming","Предстоящие");
}
else{
if(texter && past && isElementInViewport(past)){
texter.textContent = returnString("Praėję", "Past", "Прошлое");
}
}
}
}
function returnString(lt, en, ru){
if (!(typeof sessionvar === 'undefined')) {
if(sessionvar == 'en_EN'){
return en;
}
else if(sessionvar == 'ru_RU'){
return ru;
}
}
return lt;
}
【问题讨论】:
-
这就是为什么会有jQuery
-
@Kaiido 我了解带有断点的调试器,但我不了解如何在该调试器中查看事件。
-
好吧,我会在事件函数中使用 firebug 和
console.log(event),然后我会移动我的 console.log,直到找到它中断的位置以及原因。你没有抛出任何错误吗? -
我最终登录以控制台更改消息和里面的那些 ifs,他们都给了我错误。问题是 Firefox 将 document.body.scrollHeight 报告为 0...
标签: javascript php html wordpress firefox