У меня есть видео WebM с помощью мобильного браузера. Когда эти браузеры не поддерживают WebM, я хочу показать изображение:
<video
src={video}
autoPlay>
<img src={poster} />
</video>
Но в мобильном браузере Safari/Chrome/firefox в iOS, он показывает черный фон с не может играть значок. Это не откат, чтобы показать изображение, как я ожидаю.
И я также пытаюсь добавить атрибут poster
к тегу video
:
<video
poster={poster}
src={video}
autoPlay>
<img src={poster} />
</video>
И это:
<video
loop
autoPlay>
<source src={video} type="video/webm" />
<img src={poster} style={{ width: '100%', height: '100%' }} />
</video>
Это тоже не работает.
Кто-нибудь знает, как показать изображение, когда браузер не поддерживает WebM.
Как сказал @Kaiido, это не тег, который поддерживался, но носители, и большинство мобильных браузеров не размещают плакат снова, когда сбрасывается src.
Поэтому я должен заменить изображение напрямую.
Я использую React как свой стек, вот мое решение:
class App extends PureComponent {
state = {
isSupportWebM: true,
}
componentDidMount(){
const videoElement = document.querySelector('.video');
videoElement.addEventListener('error', () => {
this.setState({
isSupportWebM: false,
});
});
}
componentWillUnmount(){
// remove the listener
}
render(){
const {
isSupportWebM,
} = this.state;
return (
<div>
{
isSupportWebM
? <video src={...}></video>
: <img src={...} />
}
</div>
)
}
}
error
. Я думаю (не проверено), что плакат +onerror = e => this.src = ""
сделает это.