Реагировать: отключить щелчок правой кнопкой мыши на videojs

Ниже приведен мой код: Мне нужно добавить селектор качества и отключить опцию щелчка правой кнопкой мыши на веб-странице, которая использует videojs. Я не уверен, как использовать плагины, в реакции не было примеров плагинов. Пожалуйста помоги

Видеоплеер.js

import videojs from "video.js";

export const VideoPlayer = (props) => {
  const videoPlayerRef = useRef(null); // Instead of ID
  const [currentTime, setCurrentTime] = useState(null);
  const videoSrc = "https://media.w3.org/2010/05/sintel/trailer_hd.mp4";

  const videoJSOptions = {
    autoplay: "muted",
    controls: true,
    userActions: { hotkeys: true },
    playbackRates: [0.5, 1, 1.5, 2],
    chromecast: {
      appId: "APP-ID",
      metadata: {
        title: "Title display on tech wrapper",
        subtitle: "Synopsis display on tech wrapper",
      },
    },
    hlsQualitySelector: {
      displayCurrentQuality: true,
    },
  };

  useEffect(() => {
    if (videoPlayerRef) {
      const player = videojs(videoPlayerRef.current, videoJSOptions, () => {
        player.src(videoSrc);
        player.on("ended", () => {
          console.info("ended");
        });
        player.on("timeupdate", () => {
          setCurrentTime(player.currentTime());
        });
        console.info("Player Ready");
      });
    }

    return () => {};
  }, []);

  return (
    <div style = {{ width: "100%" }}>
      <video
        style = {{ width: "100%" }}
        ref = {videoPlayerRef}
        className = "video-js"
      />
      <span>Current Time: {currentTime}</span>
      {/* <GlobalStyle /> */}
    </div>
  );
};```
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
2 104
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы отключить меню правой кнопки мыши в видеоплеере, вы можете использовать синтетическое событие contextmenu в реакции,

document.addEventListener("contextmenu", (event) => {
  event.preventDefault();
});

// using react synthetic events
<SomeJSXVideoDOM onContextMenu = {(event)=>event.preventDefault()} />

Для получения дополнительной информации ознакомьтесь с этим [блогом в contextmenu (https://www.pluralsight.com/guides/how-to-create-a-right-click-menu-using-react).

Вы можете найти больше информации о синтетическом событии реакции для onContextMenu поверх здесь

Ответ принят как подходящий

Вы можете использовать свойство события onContextMenu для обработки щелчков правой кнопкой мыши по определенному элементу. Что-то вроде этого -

...
  return (
    <div onContextMenu = {e => e.preventDefault()} style = {{ width: "100%" }}>
      <video
        style = {{ width: "100%" }}
        ref = {videoPlayerRef}
        className = "video-js"
      />
      <span>Current Time: {currentTime}</span>
      {/* <GlobalStyle /> */}
    </div>
  );
...

Это отключит щелчок правой кнопкой мыши по элементу и всем элементам внутри него. Кроме того, это будет работать только с собственными элементами HTML, если вы не перенаправляете onContextMenu prop или forwarding ref для элемента HTML.

Другие вопросы по теме