我不知道我怎樣才能檢測是否所有的內容裏面附加動態HTML元素被加載。元素的內容可能是文字和圖片,也可能是視頻。我需要檢測它以獲得正確的元素的高度值。 我相信MutationObserver
不是那個合適的解決方案,因爲這隻能檢測節點是否已被改變,或者它的屬性。我必須檢測元素的內容何時被加載。 向父母委託load
事件不會更改任何內容。 有什麼建議嗎?如何檢測所有元素的內容是否已被加載?
1
A
回答
0
你很可能需要一個具有恆定的setTimeout檢查元素的長度的JavaScript。 (即通常不加載的元件具有長度爲0或無效)
這是我們遇到的一段時間回來的東西,可能適用於您的情況也是如此。這是爲了檢測某些元素何時完成加載,但看到您的問題,這個概念也適用。
http://www.gambit.ph/how-to-use-the-javascript-youtube-api-across-multiple-plugins/
+0
看起來有點哈克給我。使用超時並不是用於這種檢測的最好解決方案。因爲你永遠不知道要在元素中加載所有圖像需要多長時間。 – sunpietro
1
您可以使用您的AJAX調用回調函數做到這一點。關閉我的頭頂,我不記得如何在香草JavaScript的工作,但在jQuery的它應該是這樣的:
$.ajax({
url: 'my-url'
}).done(function(){
// This only fires once the AJAX request/response has complete
populateElement();
fixElementHeight();
});
通過做這種方式可以確保你把所有的內容更新元素之前。元素更新後,您就可以測量其高度。如果新的內容的一部分是圖像,或者需要獲取一些其他的內容類型,然後我會做的populateElement功能獲取:
var contentImage = new Image(imgWidth, imgHeight);
$(contentImage).click(function(event){
...
});
contentImage.src = 'source of image';
0
我決定使用JavaScript承諾處理圖像加載事件。我爲每張圖片創建了一個新的承諾,並在所有圖片加載後更新我的應用程序。 因此,沒有其他方法可以對父級進行委派來檢測是否加載了所有圖像。
相關問題
- 1. 如何檢測頁面上的所有jqGrids是否已加載?
- 2. jQuery:如何檢測LI元素是否被加載?
- 3. Javascript檢查所有點擊是否已完成加載元素
- 4. 如何檢測load()加載的元素是否已完成加載?
- 5. 如何檢測iframe是否已加載?
- 6. 如何檢測UICollectionView的所有可見單元格已加載
- 7. 如何檢查DIV中的內容是否已加載?
- 8. 如何檢查元素是否加載
- 9. 使用ajax更改元素後,如何檢測新內容是否已完全加載?
- 10. 如何檢查HTML5音頻元素是否已加載?
- 11. 如何檢測元素是否已滾出,但只有一次?
- 12. 如何檢測元素是否動態加載。
- 13. jQueryUI - 檢測元素是否被拖動
- 14. 音頻HTML5檢查所有音頻元素是否已完全加載
- 15. 如何檢查所有框架是否已加載?
- 16. 關於jQuery的追加()以及如何檢查元素是否已被追加
- 17. 如何檢測內容何時加載?
- 18. 如何檢查我的所有html內容是否都以angularjs加載?
- 19. 如何檢測XML元素是否有子元素
- 20. 檢查元素是否包含內容
- 21. 如何檢查已加載的圖像是否已加載JavaScript?
- 22. AFNetworking如何檢測所有文件是否加載
- 23. 檢測UIImage是否被預加載?
- 24. 是否window.onload意味着整個內容已被加載?
- 25. 如何檢測元素是否已淡出
- 26. 如何檢測加載的ORM對象是否已更改?
- 27. 如何檢測升壓存檔內是否有任何內容
- 28. jQuery:如何檢測一個元素是否被點擊?
- 29. 如何檢測2d UI元素是否被拉伸?
- 30. 使用JQuery檢查Mootools ajax內容是否已加載
你是如何加載文本內容? –
我從AJAX響應中獲取內容作爲字符串。該字符串包含HTML標記,如'
',''因此,對於文本內容,您可以知道它何時完成加載(即成功完成ajax請求)。至於圖片,您需要聽取img標籤的「加載」事件。對於視頻,這取決於什麼樣的視頻,他們是YouTube,Flash,HTML5 ..? –