我有以下一些代码用于在我的网站上检索照片的一小部分高分辨率.在决定是否购买之前,我们的想法是让人们一睹原始品质:
$('#magviewplus').attr('src', '/photos/original-snippet.php?id=<?php echo $nID?>&x='+left+'&y='+top).load(function() {
window.clearInterval(maginterval);
magtimer=3;
maginterval=window.setInterval(magViewCountdown,1000);
$('#clicktoenhance').html('Exiting in '+magtimer+'s...');
});
Run Code Online (Sandbox Code Playgroud)
出于某种原因,这是间歇性的.Fiddler显示片段总是被加载,但它有时只显示.即使它没有显示,load()事件中的代码也运行得很好.
因此它认为它已经加载了,Fiddler表明它已经加载了,但是大约50%的时间它实际上没有显示它应该在哪里.
它在家里的桌面上往往会少发生,而在我外出时我的笔记本电脑上会发生更多,所以我想知道它是否与资源有时相关的负载有点慢......?
有任何想法吗?
编辑:这实际上似乎仅限于Chrome和Opera,它在Firefox/IE11中运行良好
我在Ben Nadel的博客上发表评论,其中Stephen Rushing发布了一个加载器,但我无法弄清楚如何通过选择器和参数..我想我还需要一个completeCallback和errorCallback函数?
function imgLoad(img, completeCallback, errorCallback) {
if (img != null && completeCallback != null) {
var loadWatch = setInterval(watch, 500);
function watch() {
if (img.complete) {
clearInterval(loadWatch);
completeCallback(img);
}
}
} else {
if (typeof errorCallback == "function") errorCallback();
}
}
// then call this from anywhere
imgLoad($("img.selector")[0], function(img) {
$(img).fadeIn();
});
Run Code Online (Sandbox Code Playgroud)
HTML:
<a href="#" class="tnClick" ><img id="myImage" src="images/001.jpg" /></a>
Run Code Online (Sandbox Code Playgroud)
JS:
$(document).ready(function() {
var newImage = "images/002.jpg";
$("#myImage").css("display","none");
$("a.tnClick").click(function() {
// imgLoad here
}); …Run Code Online (Sandbox Code Playgroud) 我有一个图像数组(图像的确切数量不同),当它们全部加载时我想要一些代码来执行.
我试过这个,但它不起作用:
myImgArray.load(function(){
alert('loaded');
});
Run Code Online (Sandbox Code Playgroud)
我明白了
33:未捕获的TypeError:对象[对象对象],[对象对象],[对象对象],[对象对象]没有方法'加载'
我不认为for循环或类似的东西会起作用,因为图像可能并且可能会以"随机"顺序加载.