如何在新选项卡中打开新创建的图像
How to open the newly created image in a new tab?
下面的代码在同一页面的底部创建图像。如何将该图像显示在新的选项卡/窗口中,而不是在同一页面中显示?
success: function (data) {
var image = new Image();
image.src = "data:image/jpg;base64," + data.d;
document.body.appendChild(image);
}
像这样:
success: function (data) {
var image = new Image();
image.src = "data:image/jpg;base64," + data.d;
var w = window.open("");
w.document.write(image.outerHTML);
}
当前建议不适用于 chrome,我总是得到一个白页,现在我正在使用
const base64ImageData = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
const contentType = 'image/png';
const byteCharacters = atob(base64ImageData.substr(`data:${contentType};base64,`.length));
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += 1024) {
const slice = byteCharacters.slice(offset, offset + 1024);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, {type: contentType});
const blobUrl = URL.createObjectURL(blob);
window.open(blobUrl, '_blank');
感谢Jeremy!
https://stackoverflow.com/a/16245768/8270748
最新解决方案 - 适用于 2019-10。
在新选项卡中打开图像。
let data = 'data:image/png;base64,iVBORw0KGgoAAAANS';
let w = window.open('about:blank');
let image = new Image();
image.src = data;
setTimeout(function(){
w.document.write(image.outerHTML);
}, 0);
https://stackoverflow.com/a/58615423/2450431https://stackoverflow.com/a/46510790/2450431https://stackoverflow.com/a/27798235/2450431
您可以使用 document.write() 并自行添加 html 页面。此选项还允许添加选项卡标题。
const newTab = window.open();
newTab?.document.write(
`<!DOCTYPE html><head><title>Document preview</title></head><body><img src="${base64File}" width="100px" height="100px" ></body></html>`);
newTab?.document.close();
演示
更新的演示(在 Chrome 中工作,即使弹出窗口被阻止) - 3/3/2021
包装对window.open
的调用可以规避下面详述的问题。
document.getElementById('my_button').addEventListener('click', (evt) => {
window.open("https://via.placeholder.com/150", '_blank')
});
上次在 Chrome 88 上进行了 64 位 Windows 10 测试。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- AngularJs指令,该指令创建内部有数据对象的新指令
- 创建新属性后的 JSON 空属性
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 如何基于数组值创建新实例
- Jquery:为新数据创建寻呼机(next-prev按钮)
- Javascript对象创建-创建许多对象
- 新动态创建的(通过javascript)html内容在头中看不到以前使用的javascript文件
- 每次提交表单时都使用新名称创建对象
- 新对象创建问题
- JavaScript 新日期创建错误
- 如何创建创建关联数组
- 如何使用stripe.js为新客户创建令牌
- 打开一个新窗口创建一个新会话
- 如何从Alfresco UI页面中获取密码,该页面已由admin为新用户创建
- 为新元素创建侦听器
- 动态创建/创建变量's字典并打印
- 在JScript中:我可以枚举通过新ActiveXObject()创建的对象上的方法
- jQuery/JS插件,为新用户创建网站介绍/展示
- 烬数据没有为新实例创建id