MS Edge - window.open给出错误“操作已被用户取消。”

时间:2017-04-12 19:37:08

标签: javascript microsoft-edge

我有两个不同的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生成的文件?

1 个答案:

答案 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(并且应该适用于所有其他现代浏览器)。