gpt4 book ai didi

javascript - Firefox 中未定义事件

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

我想使用此代码更改主题颜色设置,但它在 Firefox 上不起作用。我使用的源代码来自这个网站:https://jonathan-harrell.com/experiment/live-theming-with-css-variables/ 。这是我的代码:

const setValue = (property, value) => {
if (value) {
document.documentElement.style.setProperty(`--${property}`, value);

const input = document.querySelector(`#${property}`);
if (input) {
value = value.replace('px', '');
input.value = value;
}
}
};

const setValueFromLocalStorage = property => {
let value = localStorage.getItem(property);
setValue(property, value);
};

const setTheme = options => {
for (let option of Object.keys(options)) {
const property = option;
const value = options[option];

setValue(property, value);
localStorage.setItem(property, value);
}
}

const dataThemeButtons = document.querySelectorAll('[data-theme]');

for (let i = 0; i < dataThemeButtons.length; i++) {
dataThemeButtons[i].addEventListener('click', () => {
const theme = dataThemeButtons[i].dataset.theme;
switch (theme) {
case 'default':
setTheme({
'meta-menu-background-color': '#50463d',
'link-color': '#ed1347',
'header-menu-color': '#50463d',
'header-menu-background-color': '#ffffff',
'footer-background-color': '#3c332e',
'footer-last-background-color': '#50463d',
});
return;
}
})
}

document.addEventListener('DOMContentLoaded', () => {
setValueFromLocalStorage('meta-menu-background-color'),
setValueFromLocalStorage('link-color'),
setValueFromLocalStorage('header-menu-color'),
setValueFromLocalStorage('footer-background-color');
setValueFromLocalStorage('footer-last-background-color');
});

const handleInputChange = (property, pixels) => {
document.documentElement.style.setProperty(`--${property}`, `${event.target.value}${pixels ? 'px' : ''}`);
localStorage.setItem(property, `${event.target.value}${pixels ? 'px' : ''}`);
};

document.querySelector('#meta-menu-background-color').addEventListener('change', event => {
handleInputChange('meta-menu-background-color', false);
});

在 Firefox 控制台中,我在这一行看到错误“ReferenceError:事件未定义”:

document.documentElement.style.setProperty(`--${property}`, `${event.target.value}${pixels ? 'px' : ''}`);

它在 Chrome 上运行良好。

你能帮我解决这个问题吗?

最佳答案

事件符号在 IE 和 Chrome 中是全局,但在 Firefox 中它作为参数传递。因此,您需要使用单个参数编写事件处理函数(如果需要,可以将其称为 event),然后向每个处理程序添加一个序言代码行:

function yourHandler(event) {
event = event || window.event;
// ...
}

关于javascript - Firefox 中未定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036666/

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