如果 document.currentScript 返回 null,這通常意味着 JavaScript 文件不是通過 <script> 標籤直接引入的,而是通過其他方式加載的,例如使用模塊加載器(如 RequireJS)或者通過 JavaScript 動態創建 <script> 元素。
在這種情況下,你可以嘗試以下解決方法:
直接傳遞變量:如果使用其他方式加載 JavaScript 文件,你可以直接在加載文件的地方將變量傳遞給 JavaScript 文件中的函數或對象。例如,如果使用模塊加載器,你可以將變量作爲參數傳遞給模塊中的函數。
等待 DOMContentLoaded 事件觸發後再執行 JavaScript 代碼:在
DOMContentLoaded事件觸發後,可以保證整個文檔已經解析完畢,包括 JavaScript 文件的加載。你可以在DOMContentLoaded事件的處理程序中執行 JavaScript 代碼,而不是依賴於document.currentScript。
例如:
document.addEventListener('DOMContentLoaded', function() {
var player = videojs('my-video');
// 獲取 videoMd5 值的方式可能需要調整,具體根據你的情況來決定
var videoMd5 = '<?= $videoMd5 ?>';
var progress = localStorage.getItem('video_progress_' + videoMd5);
if (progress) {
player.currentTime(progress);
}
player.on('timeupdate', function() {
localStorage.setItem('video_progress_' + videoMd5, player.currentTime());
});
});確保在 DOMContentLoaded 事件監聽器中執行 JavaScript 代碼可以解決在某些情況下 document.currentScript 返回 null 的問題。