我有两个不同的window.open函数调用,它们都在Microsoft Edge中失败:
var canvas = document.getElementById("diagramCanvas");
var imgUrl = canvas.toDataURL("image/png");
window.open(imgUrl);
和
window.open('data:application/vnd.ms-excel,' + encodeURIComponent($('#results').html()));
它们都会产生错误:
操作已被用户取消。
这看起来像一个弹出窗口阻止程序,因此我禁用了Edge弹出窗口阻止功能,但两者仍然失败,同时会弹出带有真实网址的令人讨厌的弹出窗口:http://www.popuptest.com/
有没有办法让Edge在新窗口中打开javascript生成的文件?
答案 0 :(得分:0)
看起来问题可能是由于新窗口声明中url的长度。
我根据这个问题的答案找到了解决方法:
Download canvas to Image in IE using Javascript
答案:
示例代码:
$("#save").click(function(){ var html="<p>Right-click on image below and Save-Picture-As</p>"; html+="<img src='"+canvas.toDataURL()+"' alt='from canvas'/>"; var tab=window.open(); tab.document.write(html); });
通过打开一个新窗口然后写入正文,可以避免网址长度限制。
此格式适用于IE9 +和Edge以及Chrome(并且应该适用于所有其他现代浏览器)。