我正在創建一個新的視頻元素,然後想要在視頻開始加載前顯示一個微調框,直到它獲得第一幀,然後刪除該元素。以下是我的代碼 -在新創建的視頻元素中創建/刪除元素
var videoElem, src;
videoElem = document.createElement("video");
videoElem.src = src;
var preloader = '<div class="preloader-wrapper"><div class="spinner-layer"><div class="circle-clipper left"><div class="circle"></div></div>' + '<div class="gap-patch"><div class="circle"></div></div><div class="circle-clipper right"><div class="circle"></div></div></div></div>';
//renders when video has started loading - show preloader
videoElem.addEventListener("loadstart", function() {
console.log("Video has started loading...!");
//jQuery(preloader).insertBefore(videoElem); //works fine but I don't know how to delete the preloader in the loadeddata eventlistener
videoElem.appendChild(preloader);
});
//renders when is loaded - delete preloader
videoElem.addEventListener("loadeddata", function() {
console.log("Video has loaded successfully!");
videoElem.removeChild(preloader);
});
的appendChild
和removeChild
是行不通的。提示錯誤:
Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node' at HTMLVideoElement.eval
其給出了一個錯誤'未能執行' '節點'上的appendChild':類型'#document'的節點可能不會被插入類型爲'VIDEO'的節點內。' –
@Liz。嘗試使用'insertBefore()'或'insertAfter()',而不是將其作爲視頻節點的子節點插入。更多關於這些方法[這裏](https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore)。在將它插入到位於視頻節點上方的「DOM」位置之後。 –
感謝您分享鏈接。它幫助了我 –