Javascript 脚本在任何基于WebKit的浏览器中都可以正常工作,但不';Firefox中的t

Javascript 脚本在任何基于WebKit的浏览器中都可以正常工作,但不';Firefox中的t,javascript,php,html,wordpress,firefox,Javascript,Php,Html,Wordpress,Firefox,我在(使用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.

我在(使用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'] ?>";
});
它在任何webkit浏览器中都可以正常工作,代码已经启动,但firefox没有加载第二个事件侦听器(我不知道如何调试是否加载,但我在网页中看不到结果)

有什么想法吗

更新

如果需要,这里是通过scriptsrc嵌入的脚本的完整源代码=

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;
}
var今天;
var向上传播;
var过去;
var-texter;
addEventListener(“DOMContentLoaded”),函数(事件){
todays=document.getElementById(“todays事件”);
upcomming=document.getElementById(“upcomming事件”);
过去=document.getElementById(“过去的事件”);
texter=document.getElementById(“事件类型”);
changeMessage();
});
window.onscroll=函数(){
changeMessage();
}
函数IsElementViewPort(el){
var rect=el.getBoundingClientRect();
返回(
rect.top>=0&&
rect.left>=0&&

rect.bottom我认为changeMessage函数中的代码不起作用,因为Firefox不理解element.innerText,您必须更改为element.textContent

问题是Firefox报告

document.body.scrollHeight
作为0,因为
changeMessage()中的每个
if
都返回false失败

在SO中找到了解决方案:

引述:

function getDocHeight() {
  var D = document;
  return Math.max(
    Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
    Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
    Math.max(D.body.clientHeight, D.documentElement.clientHeight)
  );
}

这就是为什么会出现这样的情况:@kaido我了解带有断点的调试器,但我不知道如何在调试器中监视事件。我会使用firebug和
console.log(事件)
在事件函数中,我会移动我的console.log,直到找到它在哪里断开以及为什么断开为止。你没有抛出任何错误吗?我最终登录到控制台更改消息和其中的那些if,它们都给了我false。问题是firefox将document.body.scrollHeight报告为0…我设置消息的说法是对的使用
*.inner*
,只是不使用
innerText
,而是使用
innerHTML
,如果我在firefox控制台
element.innerHTML=“test”
,那么它就可以正常工作。尝试过的
textContent
-不起作用。如果像这样放置内联脚本:var sessionvar=“”;window.addEventListener会发生什么(“DOMContentLoaded”,函数(事件){fixedMenu.init(“标题容器”,0);fixedMenu.init(“事件类型包装器”,20);window.addEventListener('scroll',函数(fid){fixedMenu.top(“标题容器”);fixedMenu.top(“事件类型包装器”);});
function getDocHeight() {
  var D = document;
  return Math.max(
    Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
    Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
    Math.max(D.body.clientHeight, D.documentElement.clientHeight)
  );
}