为什么canvas使用createPattern不生效?

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>菜鸟教程(runoob.com)</title>
</head>
<body>
  <img src="../images/img_lamp.jpg" id="lamp">
  <canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
    您的浏览器不支持 HTML5 canvas 标签。
  </canvas>
  <script>
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.clearRect(0, 0, c.width, c.height);
    var img = document.getElementById("lamp")
    var pat = ctx.createPattern(img, 'repeat');
    ctx.rect(0, 0, 220, 128);
    ctx.fillStyle = pat;
    ctx.fill();
  </script>
</body>
</html>

为什么上面这段代码执行后,画布里没有效果呢?

需要在window.onload后执行画布操作,因为需要使用到图片资源,window.onload必须等到页面内包括图片的所有元素和资源加载完毕后才能执行。

有效请采纳,谢谢!


<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>菜鸟教程(runoob.com)</title>
</head>

<body>
  <img src="../images/img_lamp.jpg" id="lamp">
  <canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
    您的浏览器不支持 HTML5 canvas 标签。
  </canvas>
  <script>
    window.onload = function () {
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.clearRect(0, 0, c.width, c.height);
      var img = document.getElementById("lamp")
      var pat = ctx.createPattern(img, 'repeat');
      ctx.rect(0, 0, 220, 128);
      ctx.fillStyle = pat;
      ctx.fill();
    }
  </script>
</body>

</html>

https://www.runoob.com/try/demo_source/img_lamp.jpg
使用这个图片链接就可以,我也不知道为啥