Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Onload()处理程序在IE中没有响应_Javascript_Jquery_Html_Canvas_Svg - Fatal编程技术网

Javascript Onload()处理程序在IE中没有响应

Javascript Onload()处理程序在IE中没有响应,javascript,jquery,html,canvas,svg,Javascript,Jquery,Html,Canvas,Svg,我正在创建一个画布,并使用drawImage绘制一个内联svg。一切正常,但我被卡住了,因为下面的问题 我的问题是,在IE中,onload处理程序没有响应??Rhis在FF和CHROME工作。我如何修复它以使其在IE 9中工作 img2.onload = function() { console.log("load"); } 我目前没有运行IE VM,但根据处理程序,必须在对象本身之前定义: 确保事件处理程序接收这些事件的onload事件 对象,将定义事件处理程序的脚本对象放在 对象

我正在创建一个画布,并使用drawImage绘制一个内联svg。一切正常,但我被卡住了,因为下面的问题

我的问题是,在IE中,onload处理程序没有响应??Rhis在FF和CHROME工作。我如何修复它以使其在IE 9中工作

img2.onload = function() {
     console.log("load");
}

我目前没有运行IE VM,但根据处理程序,必须在对象本身之前定义:

确保事件处理程序接收这些事件的onload事件 对象,将定义事件处理程序的脚本对象放在 对象,并使用对象中的onload属性设置 处理程序

我不明白为什么你的代码不能在IE中工作,但是这个小把戏稍微调整了它,所以你的处理程序是在你创建图像对象之前定义的。。。尝试一下:

function createme() {
      var test = $('<canvas />', { id : 'mycanvs' });
      var onloadHandler = function() {
          console.log("load");
      };
      $('#album').append(test);

      var svg2 = document.getElementById('sSource').innerHTML,
          vms = test[0], //canvas
          ctx2 = vms.getContext('2d');

      function svgToImage(svg2) {
        var nurl = "data:image/svg+xml;utf8," + encodeURIComponent(svg2),
            img2 = new Image;

          img2.onload = onloadHandler

          img2.src = nurl;
      }
      svgToImage(svg2);
}
createme();

谢谢但在IE中仍然不起作用。如果你在IE中运行它,你自己会看到的。嗯。。。我没有这台机器上的虚拟机,但我可以稍后再看。。。现在我再次查看代码,我想知道新图像之后丢失的图像是否会导致此问题?为了澄清,修复charset=utf-8为您提供了从SVG创建图像的部分方法。但是……即使您可以将SVG绘制到画布,在IE中,由于IE的安全限制,您也无法将画布内容导出到带有canvas.toDataURL的图像。Chrome&FF没有此类安全限制,您可以从这些浏览器中获取数据URL,从而创建包含SVG内容的图像。@markE:谢谢您的输入。如果我也需要在IE中将画布内容导出到图像,那么解决方案是什么?我不认为IE有直接的解决方案,因为当svg被绘制到画布上时,画布会立即被污染。下一个最好的解决方案是将svg发送回服务器,并将其转换为不会污染画布的.png。@马克:您建议如何将svg发送到服务器?我假定您正在客户端浏览器中动态创建svg,否则您可以将svg转换为png并发送png。无论如何,您可以使用XMLSerializer将SVG转换为字符串,然后使用AJAX将SVG发送到服务器。
function createme() {
      var test = $('<canvas />', { id : 'mycanvs' });
      var onloadHandler = function() {
          console.log("load");
      };
      $('#album').append(test);

      var svg2 = document.getElementById('sSource').innerHTML,
          vms = test[0], //canvas
          ctx2 = vms.getContext('2d');

      function svgToImage(svg2) {
        var nurl = "data:image/svg+xml;utf8," + encodeURIComponent(svg2),
            img2 = new Image;

          img2.onload = onloadHandler

          img2.src = nurl;
      }
      svgToImage(svg2);
}
createme();