Base64图像在新标签页中打开:不允许窗口将顶级框架导航导航到数据网址

时间:2017-10-10 12:16:30

标签: javascript html google-chrome

在新的Chrome版本中,我收到了此错误:

Window is not allowed to navigate Top-frame navigations to data URLs

图像看起来像(包含网址中的数据): data:image/png;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAA...

我真的需要在新标签中打开它。 iFrame解决方案并不相关

2 个答案:

答案 0 :(得分:2)

一个javascript解决方案:

var newTab = window.open();
newTab.document.body.innerHTML = '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" width="100px" height="100px">';

你可以通过很多方式改变window.open()的行为方式,查看documentation。创建一些模仿Chrome在新标签中显示图片的方式的css / html也不难。出于安全原因,已删除加载data:网址的功能,因此,如果您正在寻找一种方法,那么您就会失去运气。

答案 1 :(得分:0)

                        var byteCharacters = atob(response.data);
                        var byteNumbers = new Array(byteCharacters.length);
                        for (var i = 0; i < byteCharacters.length; i++) {
                            byteNumbers[i] = byteCharacters.charCodeAt(i);
                        }
                        var byteArray = new Uint8Array(byteNumbers);
                        var file = new Blob([byteArray], { type: 'application/pdf;base64' });
                        var fileURL = URL.createObjectURL(file);
                        window.open(fileURL);

您可以从api或其他资源返回base64字符串,并使其相同。希望对您有所帮助。