2013-02-01 21 views
13

thể trùng lặp:
Check if image exists with given url using jquery
Change image source if file existsKiểm tra nếu hình ảnh không tồn tại sử dụng javascript

Tôi ném giá trị của một con đường hình ảnh từ một textbox vào boxvalue và muốn xác nhận nếu hình ảnh tồn tại bằng javascript.

var boxvalue = $('#UrlQueueBox').val(); 

Tôi duyệt luồng ngăn xếp và tìm thấy bên dưới để có chiều rộng/chiều cao hình ảnh, nhưng không muốn sử dụng.

var img = document.getElementById('imageid'); 

Làm cách nào để xác thực nếu đó thực sự là hình ảnh từ đường dẫn hình ảnh?

+4

Nhìn chủ đề này: http : //stackoverflow.com/questions/5678899/change-image-source-if-file-exists –

+0

@FelipeOriani Đó là tạo ra một hình ảnh mới. – X10nD

+0

Câu hỏi của bạn chính xác là gì? Tôi không thấy bất kỳ dấu hỏi nào trong bài đăng của bạn ... – maerics

Trả lời

47
// The "callback" argument is called with either true or false 
// depending on whether the image at "url" exists or not. 
function imageExists(url, callback) { 
    var img = new Image(); 
    img.onload = function() { callback(true); }; 
    img.onerror = function() { callback(false); }; 
    img.src = url; 
} 

// Sample usage 
var imageUrl = 'http://www.google.com/images/srpr/nav_logo14.png'; 
imageExists(imageUrl, function(exists) { 
    console.log('RESULT: url=' + imageUrl + ', exists=' + exists); 
}); 
+0

Thử nghiệm này tạo ra một hình ảnh mới được lưu trong phần Tài nguyên -> Hình ảnh trong trình duyệt Google Chrome cho dù url có phải là hình ảnh hợp lệ hay không mà tôi không đặc biệt thích. –

+1

Điều này thật tuyệt, nhưng bạn có thể làm cho nó trả về URL không? Tôi có vòng lặp cố gắng tải biểu tượng cho danh sách và tôi cần một thứ sẽ trả về URL bạn đã thử hoặc URL mặc định nếu hình ảnh không tồn tại. Tất cả các giải pháp dường như chạy một số mã hoặc đổ vào bàn điều khiển. – chazthetic

5

Bạn có thể tạo hàm và kiểm tra thuộc tính complete.

function ImageExists(selector) { 
    var imageFound = $(selector); 

    if (!imageFound.get(0).complete) { 
     return false; 
    } 
    else if (imageFound.height() === 0) { 
     return false; 
    } 

    return true; 
} 

và gọi funciton này

var exists = ImageExists('#UrlQueueBox'); 

Cùng chức năng với các url thay vì một selector như tham số (trường hợp của bạn):

function imageExists(url){ 

    var image = new Image(); 

    image.src = url; 

    if (!image.complete) { 
     return false; 
    } 
    else if (image.height === 0) { 
     return false; 
    } 

    return true; 
} 
+1

Nó có thể được thực hiện mà không cần #selector hoặC#Id. Tôi muốn nó trực tiếp từ con đường. – X10nD

+0

sẽ hoạt động trong tất cả trình duyệt, vì điều đó sẽ hoạt động, nếu hình ảnh đã tải được lưu vào bộ nhớ cache. và do đó, việc tạo một hình ảnh mới sẽ chỉ tải hình ảnh đã được lưu vào bộ nhớ cache. Nhưng nếu quá trình đó thất bại, thì nó sẽ thất bại, đó là trường hợp bộ nhớ cache bị vô hiệu hóa. Tuy nhiên một chức năng tốt mặc dù. –

Các vấn đề liên quan