나는 비디오 용 웹 플레이어로 작업 중이며 Chrome (Version 63.0.3239.108 (Official Build) (64-bit))
과 Firefox (52.5.2 (64-bit))
에서 테스트 해 보았습니다. 크롬에서 비디오를 검색하기 위해 슬라이더를 움직일 때마다 비디오 재생을 원하는 시간 대신 현재 비디오 재생 시간으로 바로 돌아갑니다. 그러나 파이어 폭스 내부 (파이어 폭스에서 거기 내가 쓰고 있어요 하나를 오버레이 기본 스타일로 보이는 stiling 문제가 예상대로이 작동하고입력 유형 범위 슬라이더 썸을 Google 크롬에서 움직일 수 없음
function vidSeek(){
var seekto = vid.duration * (seekbar.value/100);
vid.currentTime = seekto;
}
:
다음은이 부분을 처리하는 기능입니다 나는 또한했습니다
<div id="playercontrolls">
<button id="playpausebtn">Pause</button>
<input id="seekslider" type="range" min="0" max="100" value="0" step="1"> <!-- Seek bar doesn't work-->
<span id="curtimetext" class="white-text"></span>/<span id="durtimetext" class="white-text"></span>
<button id="mutebtn">Mute</button>
<input id="volumeslider" type="range" min="0" max="100" value="100" step="1"> <!-- Volume bar works-->
<button id="fullscreenbtn">[]</button>
</div>
:하지만 난 여기에
이 슬라이더를 포함하는 설정 제어 막대의 HTML이다) 그것과 아무 상관이 있다고 생각하지 않습니다 보이는 볼륨 슬라이더가그의 코드 (파이어 폭스에서 stiling 문제 제외) 파이어 폭스와 크롬 모두에서 작동하는 것은 :
또한function setvolume(){
if(vid.muted && volumeslider.value != 0){
vid.muted = false;
mutebtn.innerHTML = "Mute";
}
vid.volume = volumeslider.value/100;
}
나는 programmaticly 시크의 값을 변경하고있어 따라서 다음과 같은 동영상 시간을 따르십시오.
function seekTimeUpdate(){
var nt = vid.currentTime * (100/vid.duration);
seekbar.value = nt;
// update time text
updateTime();
}
function updateTime(){
var curmins = Math.floor(vid.currentTime/60);
var cursecs = Math.round(vid.currentTime - curmins * 60);
var durmins = Math.floor(vid.duration/60);
var dursecs = Math.round(vid.duration - durmins * 60);
if(cursecs < 10){ cursecs = "0"+cursecs;}
if(dursecs < 10){ dursecs = "0"+dursecs;}
if(durmins > 10)
if(curmins < 10){ curmins = "0"+curmins;}
curtimetext.innerHTML = curmins+":"+cursecs;
durtimetext.innerHTML = durmins+":"+dursecs;
}
다시 한번 Firefox와 Chrome에서 잘 작동합니다. 슬라이더에 대한
CSS :
input#seekslider {
width: 90vh;
}
input#volumeslider {
width: 20vh;
}
input[type='range'] {
-webkit-appearance: none !important;
background: #000;
border: #666 1px solid;
height: 6px;
}
input[type='range']::-webkit-slider-thumb {
-webkit-appearance: none !important;
background: #FFF;
height: 15px;
width: 15px;
border-radius: 75%;
cursor:pointer;
}
input[type=range]:focus {
outline: none;
}
input[type=range]:focus::-webkit-slider-runnable-track {
background: #ccc;
}
여기에 문제가 무엇인지? 스타일링이 그 행동과 관련이 있습니까?
편집 : 여기의 요청에 따라 플레이어의 전체 자바 스크립트 코드입니다 : 내가 눈치 챘을
<div id="playerContainer" class="container z-depth-1">
<div class="d-flex justify-content-center">
<video id="vid" autoplay>
<source src= "{% static '/TestVideos/'%}{{path}}" type="video/mp4"></source>
</video>
</div>
<div id="playercontrolls">
<button id="playpausebtn" class="nokit"><i class="fa fa-pause white-text" aria-hidden="true"></i></button>
<span class="slider"><input id="seekslider" type="range" min="0" max="100" value="0" step="0.1"> </span>
<span id="curtimetext" class="white-text"></span>/<span id="durtimetext" class="white-text"></span>
<button id="mutebtn" class="nokit"><i class="fa fa-volume-up white-text" aria-hidden="true"></i></button>
<span class="slider"><input id="volumeslider" type="range" min="0" max="100" value="100" step="1"></span>
<button id="fullscreenbtn" class="nokit"><i class="fa fa-desktop white-text" aria-hidden="true"></i> </button>
</div>
</div>
뭔가 : 또한 여기 https://pastebin.com/rM54vqqf
페이지의 선수 부분에 대한 내 HTML입니다 내가 전체 화면으로 재생할 때마다 표준 컨트롤이 내 사용자 정의 컨트롤 (크롬에서만 사용 가능)과 동일한 방식으로 작동한다는 것을 알았습니다. 다음을 수행하여 해당 컨트롤을 제거하려고했습니다.
하지만 전체 화면에서는 작동하지 않는 것 같습니다. 어떤 이유로 든 내 자바 스크립트가 제대로 작동하지 못하게하는 CSS 문제를 일으킬 수 있습니까? 이 경우 여기에 플레이어에 대한 내 CSS는 다음과 같습니다 https://pastebin.com/FzFjMUPH
안녕하세요! 이 코드는 약간의 시간이 부족한 것처럼 보이므로 전체 코드를 제시해주십시오. 예를 들어,'seekbar '와 함께 객체'vid '를 볼 수 없습니다. 또한 함수가 코드와 어떤 관련이 있는지 완전히 이해할 수는 없습니다. 귀하의 예에 논리적 인 변경 사항 (예 : 동영상 태그 추가)을 추가했을 때 귀하가 언급 한 동일한 버전의 Chrome에서 모든 것이 올바르게 작동하는 것처럼 보였습니다. –
@OlegSafarov 문제를 이해하는 데 도움이되는 몇 가지 정보를 추가했습니다. – BRHSM
코드로 피들을 만들었고 Chrome에서 의도 한대로 작동합니다 (컨트롤이 전체 화면으로 표시되지 않지만). https://jsfiddle.net/2jjt3gyo/2/ –