Saya menggunakan kanvas dengan html untuk menggambar di layar. Hal yang saya butuhkan adalah menggambar dengan klik kiri saja, dan klik kanan tidak melakukan apa-apa. Saya mencoba yang berikut ini:

canvas.oncontextmenu = e => {
    e.preventDefault();
    e.stopPropagation();
}

Itu menonaktifkan menu klik kanan, tetapi saya dapat menekan kanvas (dan akhirnya menggambar di atasnya) dengan klik kiri dan kanan. Apa yang saya lewatkan?

3
user12267069 24 Oktober 2019, 10:44

5 jawaban

Jawaban Terbaik

Mencoba:

<canvas oncontextmenu="return false;"></canvas>
2
TheCondorIV 24 Oktober 2019, 07:45

Coba ini:

canvas.addEventListener('mousedown', (event) => {
  if (event.which !== 1) {
    event.preventDefault();
  }
});

Itu juga harus menonaktifkan menu konteks agar tidak muncul. Mengklik tombol tengah mouse juga tidak akan memberikan efek apa pun.

event.which berisi indeks tombol mouse yang ditekan. 1 adalah tombol kiri, 2 di tengah, 3 di kanan. preventDefault() mencegah perilaku browser default dijalankan (seperti membuka menu konteks dll, ini dapat diterapkan dalam banyak situasi).

Omong-omong, stopPropagation() digunakan untuk menghentikan peristiwa tersebut (seperti pembukaan menu konteks, dalam hal ini) agar tidak dieksekusi di elemen turunan. <canvas> tidak memiliki tag turunan, sehingga dapat dihilangkan.

0
Andrey Kostenko 24 Oktober 2019, 07:57

Anda dapat menggunakan ini:

canvas.bind('contextmenu', function(e){
    return false;
}); 
2
user12267581user12267581 24 Oktober 2019, 08:23

Menggunakan Jquery:

$('body').on('contextmenu', '#myCanvas', function(e){ return false; });
1
TheCondorIV 26 Oktober 2019, 05:03

Coba yang berikut ini:

const canvas = document.getElementById('myCanvas');
canvas.oncontextmenu = () => false;

Di mana myCanvas pada akhirnya adalah ID yang diberikan ke kanvas, mis.

<canvas id="myCanvas"></canvas>
0
user12267439user12267439 24 Oktober 2019, 07:56