這是verrrrry類似於現有的一些問題:負載事件偵聽不火WebKit中的SVG圖像元素
javascript, image onload() doesnt fire in webkit if loading same image
image.onload event and browser cache
除了不是試圖加載HTML圖像,我正在使用svg圖像。我在頁面上有一個SVG元素和一個包含數據URI字符串的變量。我想創建一個圖像元素,將其設置爲顯示數據URI,並將其添加到頁面上的SVG元素。這是我的代碼:
var svg=document.getElementsByTagName('svg')[0]
var placed=document.createElementNS("http://www.w3.org/2000/svg", 'image')
placed.addEventListener('load',function(){
alert('loaded')
})
placed.setAttribute("href",test)
placed.setAttribute("x",100)
placed.setAttribute("y",100)
placed.setAttribute("height",100)
placed.setAttribute("width",100)
svg.appendChild(placed);
其中test是數據URI。這在Firefox和Chrome瀏覽器中正常啓動(並且圖像加載正常)。它在Safari中不會啓動。我認爲這與上面鏈接的SO問題是相同的問題,但試圖按照某些答案中的建議「清除」變量似乎沒有做任何事情,而且我想知道是否需要做更多的事情。
這裏是一個應該在Safari工作在Firefox/Chrome的偉大,沒有那麼大的小提琴:
https://jsfiddle.net/362pbcLn/
如果這是事實,同樣的緩存問題,我需要什麼做清除變量並讓Safari來觸發負載監聽器?
我已經更新了小提琴 - 這確實解決了一個問題,現在圖像在Safari中加載,但它仍然不會觸發加載事件監聽器。 – AustinC
我想它沒有在Safari中實現。引發[webkit bugtracker]上的錯誤(https://bugs.webkit.org/) –