React doesn't work for preventDefault() on onCopy event


Sviat Kuzhelev

I'm trying to figure out how to make the clipboard event return falseon the onCopy event . I use test onCopyhandlers and e.preventDefault()methods. But the text is copied to the buffer without a hitch! What am I missing?

Thank you in advance.

import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import ReactDOMServer from 'react-dom/server';
import './index.css';


class Copy extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      time: '',
      timer: false,
      counter: 0
    };

    this.handlerCopy = this.handlerCopy.bind(this);
  }

  handlerCopy(e) {

    e.preventDefault(); // must prevent the current event

    this.setState(prevState => ({
      counter: prevState.counter + 1
    }));

    alert('Don\'t copy it!');
  }

  render() {
    return (
      <React.Fragment>
        <p onCopy={this.handlerCopy}>Copy me!</p>
        <p>Copy count: {this.state.counter}</p>
      </React.Fragment>
    );
  }
}

ReactDOM.render(
<Copy />,
document.getElementById('root'));
Max Wolfen

This is a great question!

This happens because React's actual event listeners are also at the root of the document, which means the click event has bubbled up to the root. You can e.nativeEvent.stopImmediatePropagation()use to block other event listeners.

try it:

import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import ReactDOMServer from 'react-dom/server';
import './index.css';


class Copy extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      time: '',
      timer: false,
      counter: 0
    };

    this.handlerCopy = this.handlerCopy.bind(this);
  }

  handlerCopy(e) {
    console.log(e.target.innerHTML);
    e.preventDefault();
    e.nativeEvent.stopImmediatePropagation();

    this.setState(prevState => ({
      counter: prevState.counter + 1
    }));

    alert('Don\'t copy it!');
  }

  render() {
    return (
      <React.Fragment>
        <p onCopy={this.handlerCopy}>Copy me!</p>
        <p>Copy count: {this.state.counter}</p>
      </React.Fragment>
    );
  }
}

ReactDOM.render(
<Copy />,
document.getElementById('root'));

Related


React doesn't work for preventDefault() on onCopy event

Sviat Kuzhelev I'm trying to figure out how to make the clipboard event return falseon the onCopy event . I use test onCopyhandlers and e.preventDefault()methods. But the text is copied to the buffer without a hitch! What am I missing? Thank you in advance. im

event.preventDefault doesn't work in React

Joshua Rajandiran I followed a tutorial and they used them on event.preventDefault()a Savebutton and saved the form to the state. I haven't really written inputthe label yet, but so far I've added a "save" button, which is kind of like reloading the page when

event.preventDefault() on keydown doesn't work

Stave Tried to capture keypresses on the Bootstrap tab panel menu, but ignored the preventDefault() placed on the tab's keypress handler, it just bubbled up. document.onkeydown = function(e) { console.log("document catched the keydown event"); }; $('body >

event.preventdefault doesn't work in Firefox

in Nakyo I'm trying to make part of the text in the Input read-only to achieve what I found this code but doesn't work in FIrefox, works fine in chrome. Found out that event.preventDefault was causing the problem. Tried returning false, that didn't work either

event.preventDefault() on keydown doesn't work

Stave Tried to capture keypresses on the Bootstrap tab panel menu, but ignored the preventDefault() placed on the tab's keypress handler, it just bubbled up. document.onkeydown = function(e) { console.log("document catched the keydown event"); }; $('body >

event.preventDefault() on keydown doesn't work

Stave Tried to capture keypresses on the Bootstrap tab panel menu, but ignored the preventDefault() placed on the tab's keypress handler, it just bubbled up. document.onkeydown = function(e) { console.log("document catched the keydown event"); }; $('body >

event.preventDefault() doesn't work on click

Dai Du I want to stop event click. I tried using event.preventDefault()"ul li a" to stop the event. <ul> <li><a href="#">Click here</a></li> </ul> <script type="text/javascript"> $(document).ready(function() { $(document).on('click','ul li a', functi

event.preventdefault doesn't work in Firefox

in Nakyo I'm trying to make part of the text in the Input read-only to achieve what I found this code but doesn't work in FIrefox, works fine in chrome. Found out that event.preventDefault was causing the problem. Tried returning false, that didn't work either

event.preventdefault doesn't work in Firefox

Fisolotian I am using the jQuery below to toggle the hidden div. It works everywhere except Firefox, I know the error is (ReferenceError: event not defined), but I'm not sure where to define the event, so if someone could help that would be great. Thanks in ad

preventDefault() doesn't work on change event

SlimJim Any ideas why preventDefault doesn't work? Here is the code below. . . Tks! <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> $(document).ready(function() { $("#text1").change(function(e) {

.unbind() doesn't work with event.preventDefault()

Justin Medas I have a responsive Javascript file that works successfully to unbind basic jQuery functionality. When the browser is set to tablet, the navigation is toggled based on click, so I disabled linking to any li element with ul. $('.main-navigation .me

event.preventDefault doesn't work

Jose Sala I have this code below but can't get event.preventDefault() to work. The problem is, I already have other forms and it works fine. I'm sure you can help me. Here is the code: $(document).on('dblclick','td.selecionaCodigoCliente', function(){

event.preventDefault doesn't work in Firefox

username I'm not sure why, but for some reason phone calls event.preventDefault()in Firefox are not working. I use it to prevent clicking on the link that redirects ayou to href, and instead run the click function. marked as follows: jQuery: $('.sub-list-click

event.preventDefault() doesn't work on mozilla

Emi I'm having trouble getting a feature to work when using Google Chrome, but in Mozilla I'm having trouble: The JavaScript code is: <script type="text/javascript"> function gid(id) { return document.getElementById(id); } function valida

event.preventDefault() on keydown doesn't work

Stave Tried to capture keypresses on the Bootstrap tab panel menu, but ignored the preventDefault() placed on the tab's keypress handler, it just bubbled up. document.onkeydown = function(e) { console.log("document catched the keydown event"); }; $('body >

event.preventDefault() on keydown doesn't work

Stave Tried to capture keypresses on the Bootstrap tab panel menu, but ignored the preventDefault() placed on the tab's keypress handler, it just bubbled up. document.onkeydown = function(e) { console.log("document catched the keydown event"); }; $('body >

event.preventDefault() doesn't work on click

Dai Du I want to stop event click. I tried using event.preventDefault()"ul li a" to stop the event. <ul> <li><a href="#">Click here</a></li> </ul> <script type="text/javascript"> $(document).ready(function() { $(document).on('click','ul li a', functi

event.preventdefault doesn't work in Firefox

in Nakyo I'm trying to make part of the text in the Input read-only to achieve what I found this code but doesn't work in FIrefox, works fine in chrome. Found out that event.preventDefault was causing the problem. Tried returning false, that didn't work either

event.preventDefault doesn't work in Firefox

username I'm not sure why, but for some reason phone calls event.preventDefault()in Firefox are not working. I use it to prevent clicking on the link that redirects ayou to href, and instead run the click function. marked as follows: jQuery: $('.sub-list-click

event.preventDefault doesn't work

Jose Sala I have this code below but can't get event.preventDefault() to work. The problem is, I already have other forms and it works fine. I'm sure you can help me. Here is the code: $(document).on('dblclick','td.selecionaCodigoCliente', function(){

event.preventDefault() function doesn't work in IE

sv_in : Here is my JavaScript (mootools) code: $('orderNowForm').addEvent('submit', function (event) { event.preventDefault(); allFilled = false; $$(".required").each(function (inp) { if (inp.getValue() != '') { allFilled = true

jQuery .click() event.preventDefault() doesn't work

Richard King: I'm building an extensible web application by putting scripts into a preset directory. The script needs to read the file header before going to the page, so I need to use .preventDefault() when I click the link and run some JScript first. Unfortu

event.preventDefault() doesn't work on android chrome

Venkat Kiran event.preventDefault() does not work on Chrome Android OS. While doing the same on chrome IOS. I even used event.stopPropagation(), event.stopImmediatePropagation(). HTML: <input class="otherAmount" type="text"id="pVal" name="pVal" onkeydown="val

event.preventDefault() function doesn't work in IE

sv_in : Here is my JavaScript (mootools) code: $('orderNowForm').addEvent('submit', function (event) { event.preventDefault(); allFilled = false; $$(".required").each(function (inp) { if (inp.getValue() != '') { allFilled = true

jQuery .click() event.preventDefault() doesn't work

Richard King: I'm building an extensible web application by putting scripts into a preset directory. The script needs to read the file header before going to the page, so I need to use .preventDefault() when I click the link and run some JScript first. Unfortu

jQuery .click() event.preventDefault() doesn't work

Richard King I'm building an extensible web application by putting scripts into a preset directory. The script needs to read the file header before going to the page, so I need to use .preventDefault() when I click the link and run some JScript first. Unfortun

jQuery event.preventDefault() doesn't work unless debugging

metal encoder I am trying to use this method in order to convert GET parameters to POST. I also want the anchors to be handled correctly even when the middle mouse button is clicked. This is how the event handler is bound: $(document).ready(function () { $