从javascript加载图像
在我的相册幻灯片放映页面上,我有如下代码从javascript加载图像,javascript,jquery,Javascript,Jquery,在我的相册幻灯片放映页面上,我有如下代码 <span style="display:none;"> <img id="id1" src="~$imageUrl`" onload="javascript:showImage();"> </span> <span> // show loader. </span> //显示加载器。 在showImage()中,我确信图像已加载,因此我显示图像并隐藏加载程序 现在,当用户单
<span style="display:none;">
<img id="id1" src="~$imageUrl`" onload="javascript:showImage();">
</span>
<span>
// show loader.
</span>
//显示加载器。
在showImage()
中,我确信图像已加载,因此我显示图像并隐藏加载程序
现在,当用户单击next时,我需要更改图像的src。现在我不知道如何仅在加载图像时设置src。试试这个。在
$imageUrl
<img id="id1" src="$imageUrl" onload="javascript:showImage();">
您可以添加另一个隐藏的
img
元素,并在onload
事件中交换它们
或者使用单个图像元素并使用javascript,如:
var _img = document.getElementById('id1');
var newImg = new Image;
newImg.onload = function() {
_img.src = this.src;
}
newImg.src = 'http://whatever';
此代码应预加载图像并在图像准备就绪时显示它每次要加载图片时使用新的图像对象:
var image = new Image();
image.onload = function () {
document.getElementById('id1').setAttribute('src', this.src);
};
image.src = 'http://path/to/image';
您可以尝试以下方法:
<img id="id1" src="url/to/file.png" onload="showImage()">
function showImage() {
$('#id1').attr('src', 'new/file/link.png');
}
函数showImage(){
$('#id1').attr('src','new/file/link.png');
}
另外,尝试删除~
,这只是操作员,服务器端(例如ASP.NET)需要它,而JS中不需要它
这样,可以更改图像的属性
下面是提示:如果您通过AJAX加载图像,可以使用回调检查图像是否已加载,并执行隐藏和src属性分配。 大概是这样的:
$.ajax({
url: [image source],
success: function() {
// Do the hiding here and the attribute setting
}
});
更多阅读请参考此
设置加载图像
$('#btnnext')。单击(函数(){
$(“.spanloader”).hide();
$(“#我的图片”).attr(“src”,“1.jpg”);
});
对不起,伙计们
您不能依赖映像加载事件来触发,但在某些情况下,您可以依赖它,并退回到允许的最大加载时间。在这种情况下,10秒。我写了这篇文章,当人们想在表单帖子上链接图片时,它依靠生产代码生存
function loadImg(options, callback) {
var seconds = 0,
maxSeconds = 10,
complete = false,
done = false;
if (options.maxSeconds) {
maxSeconds = options.maxSeconds;
}
function tryImage() {
if (done) { return; }
if (seconds >= maxSeconds) {
callback({ err: 'timeout' });
done = true;
return;
}
if (complete && img.complete) {
if (img.width && img.height) {
callback({ img: img });
done = true;
return;
}
callback({ err: '404' });
done = true;
return;
} else if (img.complete) {
complete = true;
}
seconds++;
callback.tryImage = setTimeout(tryImage, 1000);
}
var img = new Image();
img.onload = tryImage();
img.src = options.src;
tryImage();
}
像这样使用:
loadImage({ src : 'http://somewebsite.com/image.png', maxSeconds : 10 }, function(status) {
if(status.err) {
// handle error
return;
}
// you got the img within status.img
});
在JSFiddle.net上试试
参见本教程:
它告诉您如何使用本机JavaScript加载图像,以及如何处理显示加载微调器的事件。基本上,创建一个新图像();然后正确处理事件。这应该适用于所有浏览器,即使在IE7中(可能甚至低于IE7,但我没有测试…)这对我来说很有效。。。我想在点击铅笔图标后显示图像。。。我希望它是无缝的。。这就是我的方法 我创建了一个输入[文件]元素并将其隐藏
<input type="file" id="upl" style="display:none"/>
最简单的将图像从JS加载到DOM元素:
element.innerHTML += "<img src='image.jpg'></img>";
element.innerHTML+=”;
使用onload事件:
element.innerHTML += "<img src='image.jpg' onload='javascript:showImage();'></img>";
element.innerHTML+=”;
只需单击图像,即可更改:
var img=document.getElementById('imgLoad');
img.onclick=function(){img.src=”https://i.imgur.com/PqpOLwp.png"; }
~$imageUrl
?看起来语法无效。若要使用javascript更改图像源,请使用:document.getElementById(“id1”).src=“Path/of/image”
您应该先设置onload
,然后再设置src
,因为理论上图像可以在onload
函数设置之前加载,因此似乎无法加载。@Yeti:实际上没有-这是不可能的。当脚本停止执行时,浏览器将开始下载。你可以在不同的网站上查看ways@Adassko,看看这个问题:对于特定的浏览器版本,我自己也遇到过这个问题(目前我无法在Firefox上重现)。另外,在src
@Yeti之前设置onload
没有什么害处:我从未见过这种行为,但我同意——这样做没有害处。Edited@Yeti,JavaScript用户代码是单线程的,但在ajax请求中包含事件循环和内部异常。你所描述的行为是如何可能的?写关于在不等待onload事件的情况下立即访问映像属性(这不是真正正确的编程方式)。它还写道,IE9b在img.src设置后不调用onload,因此这是IE9b的问题,只是在必须生成事件时不生成事件。“您不能依赖映像加载事件触发”为什么??当时chrome中的缓存存在一些不一致之处,加载事件不会在304上触发为什么不简单地使用jQuery?它使事情变得简单得多:
element.innerHTML += "<img src='image.jpg'></img>";
element.innerHTML += "<img src='image.jpg' onload='javascript:showImage();'></img>";