Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 谷歌浏览器不会播放<;视频>;即使autoplay已停用,我的react webapp中仍有声音_Reactjs_Google Chrome_Video - Fatal编程技术网

Reactjs 谷歌浏览器不会播放<;视频>;即使autoplay已停用,我的react webapp中仍有声音

Reactjs 谷歌浏览器不会播放<;视频>;即使autoplay已停用,我的react webapp中仍有声音,reactjs,google-chrome,video,Reactjs,Google Chrome,Video,所以我们现在都知道谷歌Chrome不会让你在网站上自动播放带有声音的视频。不过,我确实有一个网站,它有一个全宽视频标题,可以在所有设备和浏览器(包括谷歌)上自动播放没有声音的视频。我的问题是,与其他浏览器相比,谷歌不允许我在用户点击取消静音按钮后取消静音。我已经尝试了很多方法来解决这个问题,但是无法实现,所以现在我只想在google chrome中没有任何自动播放功能的情况下渲染视频,因此用户点击启动视频就像在YouTube或任何其他网站上一样。然而,这也行不通如果这会导致播放带有声音的视频,谷

所以我们现在都知道谷歌Chrome不会让你在网站上自动播放带有声音的视频。不过,我确实有一个网站,它有一个全宽视频标题,可以在所有设备和浏览器(包括谷歌)上自动播放没有声音的视频。我的问题是,与其他浏览器相比,谷歌不允许我在用户点击取消静音按钮后取消静音。我已经尝试了很多方法来解决这个问题,但是无法实现,所以现在我只想在google chrome中没有任何自动播放功能的情况下渲染视频,因此用户点击启动视频就像在YouTube或任何其他网站上一样。然而,这也行不通如果这会导致播放带有声音的视频,谷歌将不允许用户开始播放视频,也不允许用户在视频开始播放后取消静音,为了增加这一难题,谷歌也不允许使用默认控件。我是complety baffeld,不知道是什么原因导致了这一问题

错误消息:

page.js:35不允许启动AudioContext。一定是 在页面上的用户手势后恢复(或创建)

我的代码:

<video ref={videoRefGC} src={video} type="video/mp4" muted /* without 'muted' video wont play at all */ />
整个源代码:

import React, { useEffect, useContext, useState, useRef, useLayoutEffect } from "react"
import Page from "./Page"
import StateContext from "../StateContext"
import DispatchContext from "../DispatchContext"
import { useImmer } from "use-immer"
import LoadingIcon from "./LoadingIcon"
import Axios from "axios"
import video from "../images/trailer.mp4"
import { NavLink } from "react-router-dom"
import { NavHashLink } from "react-router-hash-link"
import Kontakt from "./Kontakt"
import Spiel from "./Spiel"
import Footer from "./Footer"
import Helmet from "react-helmet"

function Home() {
  const appState = useContext(StateContext)
  const [state, setState] = useImmer({
    isLoading: false,
    isMuted: true,
    isScrolling: false,
    isVideoPaused: true,
    isGoogleChrome: false
  })

  var isChromium = window.chrome
  var winNav = window.navigator
  var vendorName = winNav.vendor
  var isOpera = typeof window.opr !== "undefined"
  var isIEedge = winNav.userAgent.indexOf("Edge") > -1
  var isIOSChrome = winNav.userAgent.match("CriOS")

  useEffect(() => {
    if (isIOSChrome) {
      alert("ioschrome")
    } else if (isChromium !== null && typeof isChromium !== "undefined" && vendorName === "Google Inc." && isOpera === false && isIEedge === false) {
      updateBrowserOS()
    } else {
      videoRef.current.play()
    }
  }, [])

  const updateBrowserOS = () => {
    setState(draft => {
      draft.isGoogleChrome = true
    })
    alert("I was called")
  }

  const appDispatch = useContext(DispatchContext)

  const muteHandler = () => {
    setState(draft => {
      draft.isMuted = !state.isMuted
    })
  }

  const playHandler = () => {
    videoRefGC.current.play()
    videoRefGC.current.muted = false /*This wont work either */
  }

  useEffect(() => {
    const toggleElement = document.querySelector(".heartbeat")
    if (!state.isMuted && !state.isGoogleChrome) {
      toggleElement.classList.toggle("fa-volume-down")
    }
    if (state.isMuted && !state.isGoogleChrome) {
      toggleElement.classList.toggle("fa-volume-mute")
    }
  })

useEffect(() => {
    if (state.isVideoPaused && !state.isGoogleChrome) {
      videoRef.current.pause()
      console.log(state.isGoogleChrome)
    } else {
      videoRef.current.play()
    }
  }, [])

  return (
    <Page title="Krimi Dinner">
      <Helmet>
        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"></link>
        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"></link>
        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"></link>
        <link rel="manifest" href="/site.webmanifest"></link>
        <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"></link>
        <meta name="msapplication-TileColor" content="#da532c" />
        <meta name="theme-color" content="#ffffff" />
      </Helmet>
      <NavHashLink className="skip-link" to="#mainContentSpiel">
        Skip-Link zum Angebot
      </NavHashLink>
      <NavHashLink className="skip-link" to="#kontakt">
        Skip-Link zum Anmeldeformular und zu den Kontaktinformationen
      </NavHashLink>
      <section id="videoHeader" className="video-section">
        <div className="video-container">{state.isGoogleChrome ? <video ref={videoRefGC} src={video} type="video/mp4" muted /* without 'muted' video wont play at all */ /> : <video src={video} ref={videoRef} type="video/mp4" muted={state.isMuted} autoPlay={false} loop />}</div>
        <div className="video-section-overlay"></div>
        <div className="video-section-nav" id="video-section-nav">
          <div className="video-section-nav-logo-box col-2">
            <img src={require("../images/logo_kd_pink.svg")} alt="Villa Kunterbunt Logo"></img>
          </div>
          <div className="video-section-nav-links col-8" id="video-section-nav-links">
            <NavHashLink smooth to="/#videoHeader" className="nav-link-text" aria-label="Link zum Anfang der Seite" activeClassName="active" id="HomeNavLink">
              Home
            </NavHashLink>
            <NavHashLink smooth to="/#mainContentSpiel" className="nav-link-text" aria-label="Link zu Informationen über das Spiel" activeClassName="active" id="Spiel">
              Das Spiel
            </NavHashLink>
            <NavHashLink smooth to="/#kontakt" className="nav-link-text" aria-label="Link zum Kontaktformular und anderen Kontaktmöglichkeiten" activeClassName="active" id="KontaktNavLink">
              Anmelden & Kontakt
            </NavHashLink>
          </div>
          {state.isGoogleChrome ? (
            <div id="play-controls" className="nav-video-controlls col-2">
              <span onClick={playHandler} data-for="reply" data-tip="Toggle Play" className={"icons-button"}>
                <i className="fas fa-play"></i>
              </span>
            </div>
          ) : (
            <div id="mute-controls" className="nav-video-controlls col-2">
              <span onClick={muteHandler} data-for="reply" data-tip="Toggle Sound" className={"icons-button"}>
                <i className="heartbeat fas"></i>
              </span>
            </div>
          )}

          <div id="play-controls" className="nav-video-controlls col-2 gc-ns">
            <span id="gcEL" data-for="reply" data-tip="Play Video" className={"icons-button"}>
              <i className="fas fa-play"></i>
            </span>
          </div>
          <div className="scrollDown slide-in-blurred-top" id="scrollDownPopUp">
            <button className="hax h-o-m" onClick={scrollHandler}>
              <p>scroll down</p>
              <i class="fas fa-chevron-down"></i>
            </button>
          </div>
        </div>
      </section>

      <div className="mobile-play-btn" id="mobilePlayBtn">
        <button className="d-o-m" onClick={mobilePlayHandler}>
          <i class="fas fa-play"></i>
        </button>
      </div>

      <section className="mainContentSpiel">
        <div id="mainContentSpiel">
          <Spiel />
        </div>
        <div id="kontakt">
          <Kontakt />
        </div>
        <Footer />
      </section>
    </Page>
  )
}

export default Home
import React,{useffect,useContext,useState,useRef,useLayoutEffect}来自“React”
从“/Page”导入页面
从“./StateContext”导入StateContext
从“./DispatchContext”导入DispatchContext
从“使用immer”导入{useImmer}
从“/LoadingIcon”导入LoadingIcon
从“Axios”导入Axios
从“./images/traile.mp4”导入视频
从“react router dom”导入{NavLink}
从“react路由器哈希链接”导入{NavHashLink}
从“/Kontakt”导入Kontakt
从“/Spiel”导入Spiel
从“/Footer”导入页脚
从“反应头盔”导入头盔
函数Home(){
const appState=useContext(StateContext)
常量[状态,设置状态]=使用immer({
孤岛加载:false,
伊斯穆特:是的,
伊斯克罗林:错,
是的,
谷歌浏览器:错
})
var isChromium=window.chrome
var winNav=window.navigator
var vendorName=winNav.vendor
var isOpera=typeof window.opr!=“未定义”
var isIEedge=winNav.userAgent.indexOf(“边缘”)>-1
var isIOSChrome=winNav.userAgent.match(“CriOS”)
useffect(()=>{
if(三色铬){
警报(“ioschrome”)
}else if(isChromium!==null&&typeof isChromium!==“未定义”&&vendorName==“谷歌公司”&&isOpera==false&&Iseedge==false){
updateBrowserOS()
}否则{
videoRef.current.play()
}
}, [])
常量updateBrowserOS=()=>{
设置状态(草稿=>{
draft.isGoogleChrome=true
})
警惕(“我被召唤”)
}
const appDispatch=useContext(DispatchContext)
常量muteHandler=()=>{
设置状态(草稿=>{
draft.ismute=!state.ismute
})
}
常量playHandler=()=>{
videoRefGC.current.play()
videoRefGC.current.muted=false/*这也不起作用*/
}
useffect(()=>{
const-toggleElement=document.querySelector(“.heartbeat”)
如果(!state.isMuted&&!state.isGoogleChrome){
toggleElement.classList.toggle(“fa音量下降”)
}
if(state.isMuted&&!state.isGoogleChrome){
toggleElement.classList.toggle(“fa音量静音”)
}
})
useffect(()=>{
if(state.isVideoPaused&&!state.isGoogleChrome){
videoRef.current.pause()
console.log(state.isGoogleChrome)
}否则{
videoRef.current.play()
}
}, [])
返回(
跳过链接zum Angebot
跳过链接以获取最新信息
{state.isGoogleChrome?:}
家
达斯·斯皮尔
安梅尔登与康塔克酒店
{state.isGoogleChrome(
) : (
)}
向下滚动

) } 导出默认主页
import React, { useEffect, useContext, useState, useRef, useLayoutEffect } from "react"
import Page from "./Page"
import StateContext from "../StateContext"
import DispatchContext from "../DispatchContext"
import { useImmer } from "use-immer"
import LoadingIcon from "./LoadingIcon"
import Axios from "axios"
import video from "../images/trailer.mp4"
import { NavLink } from "react-router-dom"
import { NavHashLink } from "react-router-hash-link"
import Kontakt from "./Kontakt"
import Spiel from "./Spiel"
import Footer from "./Footer"
import Helmet from "react-helmet"

function Home() {
  const appState = useContext(StateContext)
  const [state, setState] = useImmer({
    isLoading: false,
    isMuted: true,
    isScrolling: false,
    isVideoPaused: true,
    isGoogleChrome: false
  })

  var isChromium = window.chrome
  var winNav = window.navigator
  var vendorName = winNav.vendor
  var isOpera = typeof window.opr !== "undefined"
  var isIEedge = winNav.userAgent.indexOf("Edge") > -1
  var isIOSChrome = winNav.userAgent.match("CriOS")

  useEffect(() => {
    if (isIOSChrome) {
      alert("ioschrome")
    } else if (isChromium !== null && typeof isChromium !== "undefined" && vendorName === "Google Inc." && isOpera === false && isIEedge === false) {
      updateBrowserOS()
    } else {
      videoRef.current.play()
    }
  }, [])

  const updateBrowserOS = () => {
    setState(draft => {
      draft.isGoogleChrome = true
    })
    alert("I was called")
  }

  const appDispatch = useContext(DispatchContext)

  const muteHandler = () => {
    setState(draft => {
      draft.isMuted = !state.isMuted
    })
  }

  const playHandler = () => {
    videoRefGC.current.play()
    videoRefGC.current.muted = false /*This wont work either */
  }

  useEffect(() => {
    const toggleElement = document.querySelector(".heartbeat")
    if (!state.isMuted && !state.isGoogleChrome) {
      toggleElement.classList.toggle("fa-volume-down")
    }
    if (state.isMuted && !state.isGoogleChrome) {
      toggleElement.classList.toggle("fa-volume-mute")
    }
  })

useEffect(() => {
    if (state.isVideoPaused && !state.isGoogleChrome) {
      videoRef.current.pause()
      console.log(state.isGoogleChrome)
    } else {
      videoRef.current.play()
    }
  }, [])

  return (
    <Page title="Krimi Dinner">
      <Helmet>
        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"></link>
        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"></link>
        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"></link>
        <link rel="manifest" href="/site.webmanifest"></link>
        <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"></link>
        <meta name="msapplication-TileColor" content="#da532c" />
        <meta name="theme-color" content="#ffffff" />
      </Helmet>
      <NavHashLink className="skip-link" to="#mainContentSpiel">
        Skip-Link zum Angebot
      </NavHashLink>
      <NavHashLink className="skip-link" to="#kontakt">
        Skip-Link zum Anmeldeformular und zu den Kontaktinformationen
      </NavHashLink>
      <section id="videoHeader" className="video-section">
        <div className="video-container">{state.isGoogleChrome ? <video ref={videoRefGC} src={video} type="video/mp4" muted /* without 'muted' video wont play at all */ /> : <video src={video} ref={videoRef} type="video/mp4" muted={state.isMuted} autoPlay={false} loop />}</div>
        <div className="video-section-overlay"></div>
        <div className="video-section-nav" id="video-section-nav">
          <div className="video-section-nav-logo-box col-2">
            <img src={require("../images/logo_kd_pink.svg")} alt="Villa Kunterbunt Logo"></img>
          </div>
          <div className="video-section-nav-links col-8" id="video-section-nav-links">
            <NavHashLink smooth to="/#videoHeader" className="nav-link-text" aria-label="Link zum Anfang der Seite" activeClassName="active" id="HomeNavLink">
              Home
            </NavHashLink>
            <NavHashLink smooth to="/#mainContentSpiel" className="nav-link-text" aria-label="Link zu Informationen über das Spiel" activeClassName="active" id="Spiel">
              Das Spiel
            </NavHashLink>
            <NavHashLink smooth to="/#kontakt" className="nav-link-text" aria-label="Link zum Kontaktformular und anderen Kontaktmöglichkeiten" activeClassName="active" id="KontaktNavLink">
              Anmelden & Kontakt
            </NavHashLink>
          </div>
          {state.isGoogleChrome ? (
            <div id="play-controls" className="nav-video-controlls col-2">
              <span onClick={playHandler} data-for="reply" data-tip="Toggle Play" className={"icons-button"}>
                <i className="fas fa-play"></i>
              </span>
            </div>
          ) : (
            <div id="mute-controls" className="nav-video-controlls col-2">
              <span onClick={muteHandler} data-for="reply" data-tip="Toggle Sound" className={"icons-button"}>
                <i className="heartbeat fas"></i>
              </span>
            </div>
          )}

          <div id="play-controls" className="nav-video-controlls col-2 gc-ns">
            <span id="gcEL" data-for="reply" data-tip="Play Video" className={"icons-button"}>
              <i className="fas fa-play"></i>
            </span>
          </div>
          <div className="scrollDown slide-in-blurred-top" id="scrollDownPopUp">
            <button className="hax h-o-m" onClick={scrollHandler}>
              <p>scroll down</p>
              <i class="fas fa-chevron-down"></i>
            </button>
          </div>
        </div>
      </section>

      <div className="mobile-play-btn" id="mobilePlayBtn">
        <button className="d-o-m" onClick={mobilePlayHandler}>
          <i class="fas fa-play"></i>
        </button>
      </div>

      <section className="mainContentSpiel">
        <div id="mainContentSpiel">
          <Spiel />
        </div>
        <div id="kontakt">
          <Kontakt />
        </div>
        <Footer />
      </section>
    </Page>
  )
}

export default Home