是否可以在 highcharts(当前版本 9.0.1)中不启用 WebGL 的情况下使用 boost-canvas?
Is it possible to use boost-canvas without enable WebGL in highcharts (current version 9.0.1)?
由于 highcharts boost 模块强制线宽 = 1px 限制,我想使用 boost-canvas 作为默认禁用 WebGL。
我发现了一些讨论:
- https://www.highcharts.com/forum/viewtopic.php?t=39846
- https://github.com/highcharts/highcharts/issues/7670
- https://github.com/highcharts/highcharts/issues/7610
- https://github.com/highcharts/highcharts/issues/10758
我已经试过了window.WebGLRenderingContext = undefined
,但是报错:
TypeError: h.eachAsync is not a function
renderCanvas boost.src.js:2953
a boost.src.js:3374
b highcharts.src.js:2582
renderSeries highcharts.src.js:30838
renderSeries highcharts.src.js:30833
render highcharts.src.js:30985
firstRender highcharts.src.js:31201
init highcharts.src.js:29470
e highcharts.src.js:1384
init highcharts.src.js:29390
getArgs highcharts.src.js:29377
f highcharts.src.js:29371
C stock.src.js:10157
是否有任何教程强制将 boost-canvas 作为具有更好线宽的 highcharts 的默认值?
感谢@ppotaczek,它成功了。但是工具提示给出了另一个错误:
Uncaught TypeError: a is undefined
applyInactiveState highcharts.src.js:24615
applyInactiveState highcharts.src.js:24611
runPointActions highcharts.src.js:25805
onContainerMouseMove highcharts.src.js:25447
setDOMEvents highcharts.src.js:25958
setDOMEvents highcharts.src.js:26526
init highcharts.src.js:25279
init highcharts.src.js:26469
f highcharts.src.js:24604
f highcharts.src.js:26425
firstRender highcharts.src.js:31201
init highcharts.src.js:29470
e highcharts.src.js:1384
init highcharts.src.js:29390
getArgs highcharts.src.js:29377
f highcharts.src.js:29371
C stock.src.js:10157
你能帮我解决一下吗?
boost-canvas
模块中对 eachAsync
函数的引用错误 - 可能是 Highcharts 中的错误。如果您添加以下插件,该插件在 Highcharts 命名空间中存储对该函数的引用,该模块将正常工作。
(function(H) {
H.eachAsync = function(arr, fn, finalFunc, chunkSize, i, noTimeout) {
i = i || 0;
chunkSize = chunkSize || 30000;
var threshold = i + chunkSize,
proceed = true;
while (proceed && i < threshold && i < arr.length) {
proceed = fn(arr[i], i);
++i;
}
if (proceed) {
if (i < arr.length) {
if (noTimeout) {
H.eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
} else if (window.requestAnimationFrame) {
// If available, do requestAnimationFrame - shaves off a few ms
window.requestAnimationFrame(function() {
H.eachAsync(arr, fn, finalFunc, chunkSize, i);
});
} else {
setTimeout(function() {
H.eachAsync(arr, fn, finalFunc, chunkSize, i);
});
}
} else if (finalFunc) {
finalFunc();
}
}
};
})(Highcharts)
现场演示: http://jsfiddle.net/BlackLabel/qrsk4nep/
文档: https://www.highcharts.com/docs/extending-highcharts/extending-highcharts
由于 highcharts boost 模块强制线宽 = 1px 限制,我想使用 boost-canvas 作为默认禁用 WebGL。
我发现了一些讨论:
- https://www.highcharts.com/forum/viewtopic.php?t=39846
- https://github.com/highcharts/highcharts/issues/7670
- https://github.com/highcharts/highcharts/issues/7610
- https://github.com/highcharts/highcharts/issues/10758
我已经试过了window.WebGLRenderingContext = undefined
,但是报错:
TypeError: h.eachAsync is not a function
renderCanvas boost.src.js:2953
a boost.src.js:3374
b highcharts.src.js:2582
renderSeries highcharts.src.js:30838
renderSeries highcharts.src.js:30833
render highcharts.src.js:30985
firstRender highcharts.src.js:31201
init highcharts.src.js:29470
e highcharts.src.js:1384
init highcharts.src.js:29390
getArgs highcharts.src.js:29377
f highcharts.src.js:29371
C stock.src.js:10157
是否有任何教程强制将 boost-canvas 作为具有更好线宽的 highcharts 的默认值?
感谢@ppotaczek,它成功了。但是工具提示给出了另一个错误:
Uncaught TypeError: a is undefined
applyInactiveState highcharts.src.js:24615
applyInactiveState highcharts.src.js:24611
runPointActions highcharts.src.js:25805
onContainerMouseMove highcharts.src.js:25447
setDOMEvents highcharts.src.js:25958
setDOMEvents highcharts.src.js:26526
init highcharts.src.js:25279
init highcharts.src.js:26469
f highcharts.src.js:24604
f highcharts.src.js:26425
firstRender highcharts.src.js:31201
init highcharts.src.js:29470
e highcharts.src.js:1384
init highcharts.src.js:29390
getArgs highcharts.src.js:29377
f highcharts.src.js:29371
C stock.src.js:10157
你能帮我解决一下吗?
boost-canvas
模块中对 eachAsync
函数的引用错误 - 可能是 Highcharts 中的错误。如果您添加以下插件,该插件在 Highcharts 命名空间中存储对该函数的引用,该模块将正常工作。
(function(H) {
H.eachAsync = function(arr, fn, finalFunc, chunkSize, i, noTimeout) {
i = i || 0;
chunkSize = chunkSize || 30000;
var threshold = i + chunkSize,
proceed = true;
while (proceed && i < threshold && i < arr.length) {
proceed = fn(arr[i], i);
++i;
}
if (proceed) {
if (i < arr.length) {
if (noTimeout) {
H.eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
} else if (window.requestAnimationFrame) {
// If available, do requestAnimationFrame - shaves off a few ms
window.requestAnimationFrame(function() {
H.eachAsync(arr, fn, finalFunc, chunkSize, i);
});
} else {
setTimeout(function() {
H.eachAsync(arr, fn, finalFunc, chunkSize, i);
});
}
} else if (finalFunc) {
finalFunc();
}
}
};
})(Highcharts)
现场演示: http://jsfiddle.net/BlackLabel/qrsk4nep/
文档: https://www.highcharts.com/docs/extending-highcharts/extending-highcharts