首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

IE 下 JS 移除 embed 標籤無法停止視頻播放:解決方案與原理

     編輯:程式設計綜合問答

現象

jQuery $("#showbody").html("") 清空容器後,IE 9/10/11 中 <embed> 視頻聲音繼續播放,Chrome/Firefox 正常停止。

根本原因

IE 將 <embed> 視為 ActiveX/外掛對象,DOM 移除不會自動銷毀底層播放實例,需顯式調用停止方法或切換 src。

解決方案(按推薦順序)

  1. 先置空 src 再移除:
    var embed = document.getElementById('myEmbed');
    if (embed) {
        embed.src = '';          // 關鍵:切斷媒體流
        embed.remove();          // 或 $(embed).remove()
    }
    
  2. 調用插件方法(若插件暴露):
    embed.Stop(); // Windows Media Player
    embed.pause(); // VLC 等
    
  3. 外層容器隱藏而非移除:
    $("#showbody").hide().empty(); // 隱藏觸發插件暫停
    
  4. 改用 <video> 標籤(現代方案):
    <video id="vid" src="xxx.mp4" controls></video>
    // JS 控制
    document.getElementById('vid').pause();
    document.getElementById('vid').src = '';
    
    <video> 為原生元素,所有瀏覽器一致行為,移除即停止。

最佳實踐建議

  • 新項目全面遷移至 <video> + H.264/VP9,放棄 <embed>/<object>。
  • 舊項目若必須兼容 IE,封裝統一的 destroyPlayer(container) 工具函數,內部處理 src=''、Stop()、移除 DOM。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved