javascript - 为什么这在 Firefox 中不起作用?

标签 javascript firefox canvas

Here is the example .

HTML

<body>
    <p>Click on a color to begin!</p>
<canvas id="colorPicker" width="300" height="300"></canvas>
</body>

JavaScript

var elem = document.getElementById('colorPicker');
var context = elem.getContext('2d');
var color, hue = [[255,   0,   0 ],[255, 255,   0 ],[  0, 255,   0 ],[  0, 255, 255 ],[  0,   0, 255 ],[255,   0, 255 ],[255,   0,   0],]
gradient = context.createLinearGradient(0, 0, elem.width, 0);
for (var i = 0; i <= 6; i++) {
    color = 'rgb(' + hue[i][0] + ', ' + hue[i][1] + ', ' + hue[i][2] + ')';
    gradient.addColorStop(i * 1/6, color);
    }
gradient2 = context.createLinearGradient(0, 0, 0, elem.height);
gradient2.addColorStop(0, 'rgba(255, 255, 255, 1)');
gradient2.addColorStop(0.01, 'rgba(255, 255, 255, 1)');
gradient2.addColorStop(0.50, 'rgba(255, 255, 255, 0)');
gradient2.addColorStop(0.52, 'rgba(255, 255, 255, 0)');
gradient2.addColorStop(0.75, 'rgba(0, 0, 0, 1)');
gradient2.addColorStop(1, 'rgba(255, 255, 255, 1)');
context.fillStyle = gradient;
context.fillRect(0, 0, 500, 500);
context.fillStyle = gradient2;
context.fillRect(0, 0, 500, 500);

elem.addEventListener('click', function(e) {
    var x = e.offsetX; // lame but close enough for now
    var y = e.offsetY;
    var data = context.getImageData(x, y, 1, 1).data;
    // just paint it to the bottom right as an example for now:
    var rgb = 'rgb(' + data[0] + ',' + data[1] + ',' + data[2] + ')';
    $('#fluidWrap').css({backgroundColor: rgb});
    $('body').css({backgroundColor: rgb});
    $('.content').css({backgroundColor: rgb});
}, false);

它适用于除 Firefox 之外的所有浏览器。和它是rgb有关系吗?我看了一下background-color中使用rgb就可以了。

我该怎么做才能让这项工作成功?

最佳答案

如果您尝试在 eventHandler 上使用 Firebug 和断点,您将看到在 Firefox 中单击事件具有:

e.clientX
e.clientY

但不是e.offset

更改了它并适用于 Firefox。

关于javascript - 为什么这在 Firefox 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7770513/

相关文章:

javascript - 像在这个特定网站上一样下拉文本

javascript - 有什么方法可以暂时禁用 fullpage.js 的滚动功能?

Javascript 警报框在 Firefox 上不显示

javascript - Firefox 的 textarea 有默认的最大长度吗?

firefox - Mozilla Firefox 实现状态页面

javascript - 平移 + 缩放带有固定第一列的 HTML5 Canvas 网格

javascript - 使用 Javascript 和 Canvas 生成迷宫

javascript - ES2015 `import` 替代 `require()()` ?

javascript - 在 SetTimeout 函数之后调用一个函数

python - Tkinter:在没有 create_oval 的情况下在 Canvas 上画一个圆圈