我的目標是在html中使用style['background-image']
加載一些圖像,但是當我將代碼放到Ajax中時,出現了一些問題。
如果我使用異步AJAX,圖像負載次序是反向;而我使用同步ajax,圖像加載命令是正常的。
尤其是,它發生在鉻。在Firefox中是正常的。它是一個關於圖像加載的鉻的錯誤?
HTML結構是這樣的
<div class="container">
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
</div>
很簡單,當我使用同步AJAX,這樣
function Ajax(url) {
let xhr = new XMLHttpRequest()
xhr.onreadystatechange =() => {
if (xhr.readyState === 4 && xhr.status === 200) {
let slides = Array.from(document.querySelectorAll('.test'))
for (let i = 1; i < 20; i++) {
slides[i].style['background-image'] = `url(/data/gallery/1125425/content/${i})`
}
}
}
xhr.open('get', url, false)
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
xhr.send()
}
Ajax('https://api.github.com')
我們可以找到它的正常,就像我們認爲它應該是
Hower ver,當將異步從false更改爲true時,結果是這樣的。
爲了顯示url並不重要,我使用github的公共API。 而現在我們看到的結果是在網絡面板
我們可以看到最後的影像第一次加載,只是一個相反的順序與我們的第一次嘗試比較。
事實上,這種現象不會在Firefox發生,所以我想它是在瀏覽器的錯誤?
我已經把我的代碼爲Codepen。
UPDATE:我認爲造成無極LT年代,經過後來我發現事實並非如此。所以我改變標題
哇,這真的很奇怪,但是這看起來像是一個需要調試的問題,你能夠添加Codepen或類似的東西,以便調試嗎? –
我知道這只是一個例子,但你應該從i = 0開始計算,所以你不會錯過第一個元素。 – GrafWampula
@GhassenLouhaichi我已經更新並將代碼放入Codepen,如果您要調試此代碼,您可以更改圖片網址 – Messiah