我正在使用处理程序加载图像以获取有效图像和无效图像:
$('<img/>')
.attr('src',$scope.newAssetData.newAssetUrl)
.load(validImage)
.error(invalidImage);
我想在加载时设置超时。意思是,如果一个图像加载的时间超过t,那么就做一些事情(例如,转到invalidImage处理程序)。
任何想法怎么做?
谢谢你, 米拉
答案 0 :(得分:1)
我认为您希望以这种方式使用超时,例如:
var delay = 1000, /* if image takes more than one second to load, call error handler */
$img = $('<img/>').load(validImage)
.error(invalidImage)
.attr('src', $scope.newAssetData.newAssetUrl); /* set src after relevant events to hanlde older browsers cached src */
setTimeout(function () {
if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
$(this).off('load');
invalidImage.call(this);
}
}.bind($img[0]), delay);
答案 1 :(得分:0)
我不相信你可以直接在.load()
设置超时。
但是,如果您想异步加载图像,那么您可以使用.ajax()
编写请求, ie ,然后可以设置超时。
根据.load()
&#34的文档,它有一个隐含的回调函数&#34;,所以你必须自己填充
例如:
$.ajax({
url: [image src],
timeout: [in milliseconds],
type: "GET",
success: function(response) {
// I'm not sure what you'll be getting as your response
},
error: function(jqXHR, textStatus, errorThrown) {
}
});