Sweetalert2 模态在图像出现在模态之前短暂加载
Sweetalert2 modal loads briefly before image appears in modal
我正在使用 Sweetalert2 来显示内部有图像的模式。虽然它工作正常,但没有图像的模式会在图像出现之前显示一瞬间。我怎样才能等到图像完全加载。这是我尝试过但不起作用的方法:(加载页面时调用 loadPage。)
function loadPage() {
var img = new Image();
img.onload = function () { setTimeout(function () { getToast(); }, 5000); }
img.src = "Images/Save.png";
}
function getToast() {
const Toast = Swal.mixin({
toast: false,
showConfirmButton: true,
confirmButtonText: 'close',
timer: 6000,
imageUrl: 'Images/Save.png',
timerProgressBar: true,
title: 'My message.',
})
Toast.fire({
})
}
您这样做的方式应该可以正常工作而不会出现任何闪烁。图像被下载、缓存,并且在后续请求中应该从缓存中提供图像。我创建了一个 fiddle,但无法重建您描述的问题。
尽管我创建了另一种方法,将下载的图像保存为 dataURI 并将其传递给您的 SweetAlert 实例。这样可以防止不小心多次下载图片。
function loadPage() {
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function() {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var dataURL;
canvas.height = this.height;
canvas.width = this.width;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL('canvas');
setTimeout(function () { getToast(dataURL); }, 1000);
canvas = null;
};
img.src = 'http://upload.wikimedia.org/wikipedia/commons/4/4a/Logo_2013_Google.png';
}
function getToast(dataURL) {
const Toast = Swal.mixin({
toast: false,
showConfirmButton: true,
confirmButtonText: 'close',
timer: 6000,
imageUrl: dataURL,
timerProgressBar: true,
title: 'My message.',
})
Toast.fire({
})
}
loadPage()
另见附件 fiddle 的工作示例:https://jsfiddle.net/4sza8u2m/
我正在使用 Sweetalert2 来显示内部有图像的模式。虽然它工作正常,但没有图像的模式会在图像出现之前显示一瞬间。我怎样才能等到图像完全加载。这是我尝试过但不起作用的方法:(加载页面时调用 loadPage。)
function loadPage() {
var img = new Image();
img.onload = function () { setTimeout(function () { getToast(); }, 5000); }
img.src = "Images/Save.png";
}
function getToast() {
const Toast = Swal.mixin({
toast: false,
showConfirmButton: true,
confirmButtonText: 'close',
timer: 6000,
imageUrl: 'Images/Save.png',
timerProgressBar: true,
title: 'My message.',
})
Toast.fire({
})
}
您这样做的方式应该可以正常工作而不会出现任何闪烁。图像被下载、缓存,并且在后续请求中应该从缓存中提供图像。我创建了一个 fiddle,但无法重建您描述的问题。
尽管我创建了另一种方法,将下载的图像保存为 dataURI 并将其传递给您的 SweetAlert 实例。这样可以防止不小心多次下载图片。
function loadPage() {
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function() {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var dataURL;
canvas.height = this.height;
canvas.width = this.width;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL('canvas');
setTimeout(function () { getToast(dataURL); }, 1000);
canvas = null;
};
img.src = 'http://upload.wikimedia.org/wikipedia/commons/4/4a/Logo_2013_Google.png';
}
function getToast(dataURL) {
const Toast = Swal.mixin({
toast: false,
showConfirmButton: true,
confirmButtonText: 'close',
timer: 6000,
imageUrl: dataURL,
timerProgressBar: true,
title: 'My message.',
})
Toast.fire({
})
}
loadPage()
另见附件 fiddle 的工作示例:https://jsfiddle.net/4sza8u2m/