2017-04-08 53 views
-1

我有這個代碼,我想用它來檢查圖像的寬高比,然後加載它。Javascript:圖像完整/加載事件未被觸發

我的問題是,與綁定的函數回調image.complete事件沒有觸發。

我在哪裏錯了?

checkAspectRation : function(file){ 

    var reader = new FileReader(); 
    /*Read the file*/ 
    reader.readAsDataURL(file); 

    /*Callback */ 
    reader.onloadend = (function() { 

     var image = new Image(); 

     image.complete = function() { 
      // access image size here 
      console.log("Width: " + this.width); 
      console.log("Height: " + this.height); 
     }; 

     image.src = reader.result; 

     console.log(image); 
    }); 

}, 

這是圖像的加載後的值:

enter image description here

[編輯]

我以這種方式改變了,但它依然不工作

checkAspectRation : function(file){ 

    var image = new Image(); 
    image.onload = function() { 
     // access image size here 
     console.log("Width: " + this.width); 
     console.log("Height: " + this.height); 
    }; 

    var reader = new FileReader(); 

    /*Callback */ 
    reader.onloadend = (function() { 
     console.log(image); 
     image.src = reader.result;  
    }); 

    /*Read the file*/ 
    reader.readAsDataURL(file); 
}, 
+0

'complete'不是一個事件處理程序。你正在考慮'onload'。 – JJJ

+0

謝謝@JJJ,但我有同樣的結果使用'onload' – fciri

+0

設置onload在致電readAsDataURL –

回答

0

已解決已更改:

var image = new Image(); 

var image = document.createElement("img"); 

這工作得很好:

checkAspectRation : function(file){ 

    var reader = new FileReader(); 

    /*Callback */ 
    reader.onloadend = function() { 

     //var image = new Image(); 
     var image = document.createElement("img"); 
     image.onload = function() { 
      // access image size here 
      console.log("Width: " + this.width); 
      console.log("Height: " + this.height); 
     }; 

     image.src = reader.result; 

    }; 

    /*Read the file*/ 
    reader.readAsDataURL(file); 
},