gpt4 book ai didi

javascript - 脚本在任何基于 WebKit 的浏览器中都可以正常工作,但在 Firefox 中却不行

转载 作者:行者123 更新时间:2023-12-03 12:08:35 24 4
gpt4 key购买 nike

我在 header.php 中有一个脚本(使用 wordpress),如下所示:

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'] ?>";
});

在此脚本之后,我添加了一个带有脚本 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 不加载第二个事件监听器(我不知道如何调试它是否加载,但我在网页中看不到结果) .

有什么想法吗?

更新

如果有需要,这里是通过脚本 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;
}

最佳答案

问题是 Firefox 报告

document.body.scrollHeight

为 0,因为 changeMes​​sage() 内的每个 if 都因返回 false 而失败。

解决方案在SO:.body.scrollHeight doesn't work in Firefox中找到

引用:

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)
);
}

关于javascript - 脚本在任何基于 WebKit 的浏览器中都可以正常工作,但在 Firefox 中却不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com