2014-03-06 40 views
0

我試圖加載使用JavaScript的簡單圖像加載,對於我使用下面的代碼的javascript:圖像無法在Internet Explorer

function loadImage(src) { 
    var image = new Image; 
    image.onload = function() { 
     document.body.appendChild(image); 
    }; 
    image.onerror = function() { 
     document.body.appendChild(document.createTextNode('\nError loading as image: ' + this.src)); 
    }; 
    image.src = src; 
} 

loadImage('http://www.linkedin.com/favicon.ico'); 
loadImage('http://www.facebook.com/favicon.ico'); 

Fiddle Link

我現在面臨的問題是整個事情在Chrome和Firefox中工作,但不能在Internet Explorer中工作。我不太習慣與JavaScript。

任何解決方案?

+0

我只是下載.ico文件,它的工作FB和谷歌在Internet Explorer只是LinkedIn檔案沒有加載:( – Abhishek

+0

見http://stackoverflow.com/questions/1439232/ie-doesnt-show -ico-icons-in-html-if-not-served-as-image-x-icon如果圖標作爲特定類型的文件提供,那麼IE將不會顯示它,你真的不想使用它.ICO文件在您的網頁 – jfriend00

回答

1

IE不會將ICO圖像加載到瀏覽器中,除非其contentType爲image/x-icon

我可以通過查看Firefox中的網絡標籤來確認LinkedIn圖片的contentType爲application/octet-stream,這可以解釋爲什麼IE不會顯示它,而Facebook圖片的內容類型爲image/x-icon哪種IE喜歡。

除了不要求在服務器上設置該類型的圖像以外,沒有什麼可以從瀏覽器中獲得。我很確定像LinkedIn這樣的網站會有其他來自那裏的小圖片,您可以鏈接到該網站。如果您查看其主頁的linkedIn源代碼,您會發現一個標記指向http://s.c.lnkd.licdn.com/scds/common/u/images/logos/favicons/v1/16x16/favicon.ico,它在IE中工作得很好(因爲它是image/x-icon)。

+0

檢查此小提琴http://jsfiddle.net/ iamabhiee/tEhCR/3/facebook圖像被加載到所有瀏覽器中,而linkedin卻不能加載,例如 – Abhishek

+0

@UndercoverDevelop呃 - 好的,我想現在我已經在這裏總結了這個問題。 – jfriend00

+0

感謝它的工作! – Abhishek

-1
call the function on window load :- 
<script type="text/javascript"> 

function loadImage(src) { 
var image = new Image; 
image.onload = function() { 
    document.body.appendChild(image); 
}; 
image.onerror = function() { 
    document.body.appendChild(document.createTextNode('\nError loading as image: ' +  this.src)); 
}; 
image.src = src; 
} 

window.onload=loadImage('http://www.linkedin.com/favicon.ico'); 

</script> 

the image is not loading, when you call the method after load all the elements then it will work. 
+0

感謝您的幫助,但它仍然給出了同樣的錯誤:/ – Abhishek

+0

請在清除您的瀏覽器歷史記錄後檢查,您使用的是哪個版本的IE? –

0

還值得注意的是,一些老版本的IE瀏覽器(老實說,我不記得IE8是否是受影響的版本之一),onload事件不是從緩存中加載的。

function loadImage(src) { 
    function doOnLoad() { 
     document.body.appendChild(image); 
    } 

    var image = new Image; 
    image.onload = doOnLoad; 
    image.onerror = function() { 
     document.body.appendChild(document.createTextNode('\nError loading as image: ' + this.src)); 
    }; 
    image.src = src; 
    if (image.complete) { 
     doOnLoad(); 
    } 
} 
相關問題