admin管理员组

文章数量:1404924

I am currently working on a chrome extention for youtube and I want to disable the option for the user to pause/play the video by clicking on it.

I saw some posts that say "video.off('click');" but it dosent work.

I tried this one also :

video.addEventListener('click', function(event){
    console.log("preventing?")
    event.preventDefault();
});

but still it doesn't do nothing.

I would love some help if possible - Thank you all in advance!

Edit:

I saw the ments and I want to sharpen my question. I need a solution to disabling just the click event to stop the play/pause from there.

I also need the answer to be written in a javascript file because I want to control whether or not the user can click on the video.

I've also looked in: Javascript code for disabling mouse click for youtube videos but I haven't managed to find a corrent solution to my spesific question. I saw one solution that remend to add a transparent overlay on top of the video element but I have no idea how to do so and how to make it resize as the video player itself resizes

I am currently working on a chrome extention for youtube and I want to disable the option for the user to pause/play the video by clicking on it.

I saw some posts that say "video.off('click');" but it dosent work.

I tried this one also :

video.addEventListener('click', function(event){
    console.log("preventing?")
    event.preventDefault();
});

but still it doesn't do nothing.

I would love some help if possible - Thank you all in advance!

Edit:

I saw the ments and I want to sharpen my question. I need a solution to disabling just the click event to stop the play/pause from there.

I also need the answer to be written in a javascript file because I want to control whether or not the user can click on the video.

I've also looked in: Javascript code for disabling mouse click for youtube videos but I haven't managed to find a corrent solution to my spesific question. I saw one solution that remend to add a transparent overlay on top of the video element but I have no idea how to do so and how to make it resize as the video player itself resizes

Share Improve this question edited May 2, 2022 at 10:52 Oak_xo asked May 2, 2022 at 9:53 Oak_xoOak_xo 453 silver badges10 bronze badges 6
  • 2 In css: video { pointer-events: none } . You could also add an absolute transparent overlay 100% width/height so it intercepts all mouse events. – Cesare Polonara Commented May 2, 2022 at 9:55
  • it doesn't do nothing so what does it do? ... as for video.off that'd be a jQueery hack and would only work if jQueery was used to add a click handler – Bravo Commented May 2, 2022 at 9:55
  • @CesarePolonara, is there an option to write the css inside the javascript content file? because i want to disable the click event based on changing variables – Oak_xo Commented May 2, 2022 at 10:03
  • @Bravo, sorry bravo - I am not quite familiar to jQueery. I am new to the whole javascript and chrome extention world, its my first project in this material - so I got alot to learn – Oak_xo Commented May 2, 2022 at 10:05
  • Does this answer your question? Javascript code for disabling mouse click for youtube videos – Oleg Levin Commented May 2, 2022 at 10:06
 |  Show 1 more ment

3 Answers 3

Reset to default 6

Attach a click listener on window + use the capture phase by specifying true for the third parameter of addEventListener + use stopPropagation, so that your listener will be the first target in the event propagation chain i.e. it'll run before the site's handlers because sites usually don't use the capture phase.

window.addEventListener('click', event => {
  if (event.target.matches('video')) {
    event.stopPropagation();
  }
}, true);

Note that if some rare site uses the exact same trick, you can still override it by declaring your content script with "run_at": "document_start".

You can check both the implementations here: https://stackblitz./edit/web-platform-4oehg4?file=index.html ( SO snippet can't embed yt iframe videos )

// HTML

 <div class="container">
      <iframe
        id="video2"
        width="100%"
        height="100%"
        src="https://www.youtube./embed/LcGRpsD6yuk?controls=0?mute=1&autoplay=1"
        title="YouTube video player"
        frameborder="0"
        allow="accelerometer; mute; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;"
      ></iframe>
      <div class="overlay"></div>
    </div>

// CSS

.container {
  position: relative;
  width: 100%;
  height: 50%;
}

.overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

Using CSS Only:

// HTML

  <iframe
      width="100%"
      height="50%"
      id="video"
      src="https://www.youtube./embed/LcGRpsD6yuk?controls=0?mute=1&autoplay=1"
      title="YouTube video player"
      frameborder="0"
      allow="accelerometer; mute; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;"
    ></iframe>

// CSS

#video {
  pointer-events: none;
}

I noticed that some websites showing youtube videos put a transparent overlay on top of the player so that the users cannot click on the "Open in YouTube" icon. This might help you too, even if it might still be able to give focus to the controls using the keyboard.

本文标签: javascriptHow to disable click event on video element in youtubeStack Overflow