使用相对路径时 currentTime 出现问题

Trouble with currentTime when relative path used

我正在创建一个自制的 js 播放器来播放一些 audio/video 从 table 到像我的 Laravel 网站这样的自定义播放器。单击 table 上的元素时,将播放器设置在该位置的正确 audio/video 文件上。 问题:将 link 的 currentTime 原因设置为 audio/video 个文件。

如果我使用完整的 link,我的代码可以完美运行。 如果我使用相对 link,我的代码会遇到一些麻烦。 但是,我不能在我的生产服务器上使用完整的 link 因为 Laravel 的路由 returns 404.

我尝试使用事件 loadedmetadata,但没有用。

例如:

player_element.currentTime = 448.3

console.log('CT: '+player_element.currentTime)

returnsCT: 16.352372,为什么?

我尝试使用事件 canplay 来设置 currentTime:

Chrome 控制台日志:

returns CT: 0.

(我设置了一个布尔变量,因为它在 currentTimecanplay 处返回并中断了播放)

player_element = document.createElement('audio');
        player_element.setAttribute('src',media_path+src[divParent.data('currentSrc')].filename);
player_element.setAttribute('preload','metadata');
player_element.load();

let start_player = true;

let start_elt = divParent.data('start_element');

player_element.oncanplay = function(){

if (start_player) {

  if (player_element.currentTime == start_elt) {

   start_player = !start_player;

  }

  player_element.currentTime = start_elt;

  }

}

我终于找到了另一个解决方案: 我修改了访问文件的路径,我的文件在 'public' 文件夹中的 'files' 文件夹中。如果文件存在,此通配符将 return 文件 return 404.

Route::GET('/public/files/{any}',function($page){
  $page = '../public/files/'.$page;
  // dd('in',$page);
  if (file_exists($page)) {
    return Response::download($page);
  }else {
    abort(404);
  }
})->where('any','.*');