以下是一个不加载来自Http源的图像的Javascript函数的解决方法:
function loadImage(url) {
return new Promise((resolve, reject) => {
const image = new Image();
image.onload = () => {
resolve(image);
};
image.onerror = () => {
reject(new Error('Failed to load image'));
};
// 检查图片URL是否来自Http源
if (url.startsWith('http://')) {
reject(new Error('Cannot load image from Http source'));
} else {
image.src = url;
}
});
}
// 使用示例
loadImage('https://example.com/image.jpg')
.then(image => {
// 图片加载成功
document.body.appendChild(image);
})
.catch(error => {
console.error(error);
});
在上面的示例中,我们定义了一个名为loadImage
的函数,它接受一个URL作为参数,并返回一个Promise对象。我们创建了一个新的Image对象,并在其加载完成时解析Promise,或在加载失败时拒绝Promise。在加载图片之前,我们检查URL是否以http://
开头,如果是,则拒绝Promise,并抛出一个错误。
使用示例中,我们调用loadImage
函数并传递一个URL作为参数。然后,我们使用.then()
方法来处理成功的Promise,并在加载成功时将图片添加到文档中。如果加载失败,则使用.catch()
方法处理拒绝的Promise,并打印错误信息到控制台。
这样,当尝试加载来自Http源的图像时,Promise会被拒绝,并抛出一个错误。