Javascript 使用ctrl+在firefox中首次加载或重新加载时在画布上绘制图像;f5不工作

Javascript 使用ctrl+在firefox中首次加载或重新加载时在画布上绘制图像;f5不工作,javascript,firefox,canvas,Javascript,Firefox,Canvas,我的问题是,firefox(版本34)中第一次加载文档时,图像没有绘制在画布上。它在IE中工作 我创建了一个最小的示例页面来说明我的问题。您应该能够通过使用代码创建HTML文件、使用任何png文件并在firefox中加载该文件来进行复制。宽度和高度是我的图片的宽度和高度,只需使用您的图像大小 我在画布之前添加了img标记,以便在javascript代码执行之前加载图像。但画布仅在第一次加载后再次按F5时才绘制图像。按Ctrl+F5,图像将消失。F5再次返回。。。你明白了。如果缓存被清空,图形将不

我的问题是,firefox(版本34)中第一次加载文档时,图像没有绘制在画布上。它在IE中工作

我创建了一个最小的示例页面来说明我的问题。您应该能够通过使用代码创建HTML文件、使用任何png文件并在firefox中加载该文件来进行复制。宽度和高度是我的图片的宽度和高度,只需使用您的图像大小

我在画布之前添加了img标记,以便在javascript代码执行之前加载图像。但画布仅在第一次加载后再次按F5时才绘制图像。按Ctrl+F5,图像将消失。F5再次返回。。。你明白了。如果缓存被清空,图形将不工作

有人知道我是否可以在firefox中防止这种情况(因为它在IE中工作,没有测试chrome)?我是否忽略了绘画前应该做的事情?
也许我做错了什么

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <img src="ball.png"/>
    <canvas id="canvas" height="100" width="100"></canvas>
    <script>
        var canvas = document.getElementById("canvas"), context = canvas.getContext("2d");
        var internal_image = new Image();
        internal_image.src = "ball.png";
        internal_image.width = 18;
        internal_image.height = 19;
        context.drawImage(internal_image, 10, 10);
    </script>
</body>

var canvas=document.getElementById(“canvas”),context=canvas.getContext(“2d”);
var internal_image=新图像();
internal_image.src=“ball.png”;
内部图像宽度=18;
内部图像高度=19;
背景。drawImage(内部图像,10,10);

这只是一个用于说明的文件示例。实际上我使用的是jquery,代码是在

$(文件)。准备好了吗


函数。

尝试调用图像的
load
函数中的
drawImage
函数,以确保在尝试绘制图像之前确实加载了图像

var canvas = document.getElementById("canvas"), context = canvas.getContext("2d");
var internal_image = new Image();
internal_image.src = "ball.png";
internal_image.width = 18;
internal_image.height = 19;

internal_image.addEventListener("load", function() {
  context.drawImage(internal_image, 10, 10);
}, false);

这很有效。你知道为什么原始代码在firefox中不工作,而在IE中工作吗?很可能是因为它在IE中工作:)很可能是在调用
.drawImage()
之前刚刚加载的图像,这也解释了为什么它也在缓存中使用FF。