我有一个 Javascript,可以为 Canvas 元素创建线性渐变并设置一些颜色停止点。
该脚本在 Chrome 和 Firefox 中按预期工作,但在 Edge(以及 IE)中给我一个“语法错误”。
错误出现在运行时,对我来说,这意味着我的脚本在语法上是正确的,但底层实现中可能存在错误(在本例中是渐变的 setColorStop 函数,但这只是猜测)。
这是一个精简版本:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
function loader() {
var ctx = document.getElementById("canvas1").getContext('2d');
var left = 0;
var right = 199;
var gradient = ctx.createLinearGradient(left, 0, right, 0);
var a = 20 ;
var b = 2 ;
var c = "#17a2b8" ;
var d = "#80808080" ;
console.log( a,b,c,d ) ;
gradient.addColorStop( 0, c ) ;
console.log( "done 1" ) ;
gradient.addColorStop( ( a - ( b - 1 ) ) / a, c ) ;
console.log( "done 2" ) ;
gradient.addColorStop( ( a - ( b - 1 ) ) / a, d ) ; // <== SyntaxError here!
console.log( "done 3" ) ;
gradient.addColorStop( 1, d );
console.log( "done 4" ) ;
}
</script>
</head>
<body onload="loader()">
<canvas id="canvas1" sytle="width:200px;height:200px"></canvas>
</body>
</html>
这是 Edge 的控制台输出:
...以及 Chrome(用于比较):
我的问题:为什么会发生这种情况?我该如何解决这个问题?
最佳答案
这很可能是由于 #rrggbbaa
某些版本的 Edge 不支持十六进制颜色表示法 ( var d = "#80808080";
)。
更新它或使用 rgba(255, 255, 255, 1)
符号
关于javascript - Microsoft Edge Javascript 中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60898998/