Javascript 为什么在React中忽略视频标签上的“mute”属性?
嗯,听起来有点违反直觉,Javascript 为什么在React中忽略视频标签上的“mute”属性?,javascript,html,reactjs,Javascript,Html,Reactjs,嗯,听起来有点违反直觉,静音的标签不知何故被忽略了;查看下面的代码片段, 第一个用react呈现,第二个用普通html呈现;用你的开发工具检查它们,你会发现react on没有静音属性;我已经尝试了muted={true},muted=“true”,但是non正在工作 函数VideoPreview(){ 返回( 反应标签: 您的浏览器不支持视频标记。 ); } ReactDOM.render(,root) 常规html: 您的浏览器不支持视频标记。 这实际上是一个自2016年以来就存在的问
静音的
标签不知何故被忽略了;查看下面的代码片段,
第一个用react呈现,第二个用普通html呈现;用你的开发工具检查它们,你会发现react on没有静音属性;我已经尝试了muted={true}
,muted=“true”
,但是non正在工作
函数VideoPreview(){
返回(
反应标签:
您的浏览器不支持视频标记。
);
}
ReactDOM.render(,root)
常规html:
您的浏览器不支持视频标记。
这实际上是一个自2016年以来就存在的问题。
视频将正确静音,但不会在DOM中设置属性。
您可以在GitHub问题中找到多个解决方案,尽管其中任何一个都可能有优点和缺点。正如@FluidSense所提到的,这是一个永远开放的bug
我可以这样做:
import React, { useRef, useEffect } from "react";
export default function Video({ src, isMuted }) {
const refVideo = useRef(null);
useEffect(() => {
if (!refVideo.current) {
return;
}
if (isMuted) {
//open bug since 2017 that you cannot set muted in video element https://github.com/facebook/react/issues/10389
refVideo.current.defaultMuted = true;
refVideo.current.muted = true;
}
refVideo.current.srcObject = src;
}, [src]);
return (
<video
ref={refVideo}
autoPlay
playsInline //FIX iOS black screen
/>
);
}
import React,{useRef,useffect}来自“React”;
导出默认函数视频({src,ismute}){
const refVideo=useRef(空);
useffect(()=>{
如果(!refVideo.current){
返回;
}
如果(isMuted){
//打开2017年以来无法在视频元素中设置静音的错误https://github.com/facebook/react/issues/10389
refVideo.current.defaultMuted=true;
refVideo.current.muted=true;
}
refVideo.current.srcObject=src;
},[src]);
返回(
);
}
我这边的视频似乎静音了…@AneesIjaz不,视频没有声音;这是一个预览链接,你是否尝试过一个有声音的视频。可能不是添加属性react,而是直接将播放器的属性更改为Mute。该属性是通过js设置的,而不是通过html属性设置的。如果添加带有音频的视频,您将看到它已正确静音。@GabrielePetrioli问题是autoPlay
策略要求视频静音,如果没有该属性,它将如何理解视频是否静音