使用相对路径时 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
:
在 Firefox 和 Edge 下工作
在 Chrome!
下不起作用
Chrome 控制台日志:
returns CT: 0
.
(我设置了一个布尔变量,因为它在 currentTime
而 canplay
处返回并中断了播放)
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','.*');
我正在创建一个自制的 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
:
在 Firefox 和 Edge 下工作
在 Chrome!
下不起作用
Chrome 控制台日志:
returns CT: 0
.
(我设置了一个布尔变量,因为它在 currentTime
而 canplay
处返回并中断了播放)
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','.*');