我目前正在集成动态深色主题功能,并且需要在更改主题时更改Chart.js的默认值。它看起来像这样(高度简化):
function changeTheme(darkTheme = false) {
if (darkTheme) {
document.body.classList.add('dark-theme');
Chart.defaults.global.defaultFontColor = 'white';
} else {
document.body.classList.remove('dark-theme');
Chart.defaults.global.defaultFontColor = 'black';
}
}
Run Code Online (Sandbox Code Playgroud)
页面上的现有图表不会立即应用更改后的默认设置。仅在更新时进行(例如在工具提示上、数据更改、画布大小调整)。
我可以通过调用 Chart 的实例方法来手动更新图表.update()。但我无权访问所有现有的图表对象(无权访问创建它们的脚本的范围),并且我没有找到全局获取它们的方法。
如果能回答上述问题之一,我就已经很满意了。
显示并运行代码片段。点击“toggleDarkTheme”按钮,然后点击“投票数”或其他内容来触发更新。
// set function for theme
function changeTheme(darkTheme = false) {
if (darkTheme) {
document.body.classList.add('dark-theme');
Chart.defaults.global.defaultFontColor = 'white';
} else {
document.body.classList.remove('dark-theme');
Chart.defaults.global.defaultFontColor = 'black';
}
}
changeTheme(false);
// button to toggle theme
let darkThemeActive = false;
document.getElementById('toggleDarkTheme').addEventListener('click', ()=>{ …Run Code Online (Sandbox Code Playgroud)