একটি জাভাস্ক্রিপ্ট ইভেন্ট ডান ক্লিক করুন?


173

একটি জাভাস্ক্রিপ্ট ইভেন্ট ডান ক্লিক করুন? যদি তা হয় তবে আমি কীভাবে এটি ব্যবহার করব?

উত্তর:


188

অন্যরা যেমন উল্লেখ করেছে, মাউসের ডান বোতামটি সাধারণ মাউস ইভেন্টগুলির মাধ্যমে সনাক্ত করা যায় (মাউসডাউন, মাউসআপ, ক্লিক) । তবে, ডান ক্লিকের মেনুটি আনার সময় আপনি যদি কোনও ফায়ারিং ইভেন্টের সন্ধান করছেন, আপনি ভুল জায়গায় সন্ধান করছেন। ডান-ক্লিক / প্রসঙ্গ মেনু কীবোর্ডের মাধ্যমে (shift + F10 বা উইন্ডোজ এবং কিছু লিনাক্সের প্রসঙ্গ মেনু কী) এর মাধ্যমেও অ্যাক্সেসযোগ্য। এই পরিস্থিতিতে, আপনি যে ইভেন্টটির সন্ধান করছেন তা হ'ল oncontextmenu:

window.oncontextmenu = function ()
{
    showCustomMenu();
    return false;     // cancel default menu
}

মাউসের ইভেন্টগুলি নিজেরাই, ব্রাউজারগুলি ইভেন্ট হ্যান্ডলিংয়ের ফাংশন থেকে অ্যাক্সেসযোগ্য ইভেন্ট অবজেক্টে একটি সম্পত্তি সেট করে:

document.body.onclick = function (e) {
    var isRightMB;
    e = e || window.event;

    if ("which" in e)  // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
        isRightMB = e.which == 3; 
    else if ("button" in e)  // IE, Opera 
        isRightMB = e.button == 2; 

    alert("Right mouse button " + (isRightMB ? "" : " was not") + "clicked!");
} 

window.oncontextmenu - MDC


5
ঠিক যেভাবে / বোতামের ইস্যুটির সাথে, সমস্ত ব্রাউজারগুলিতে 'অনকন্টেক্সটেমেনু' একইরকম প্রয়োগ করা হয় না ... কিছু 'গ্যাটাচাস' এর জন্য quirksmode.org/dom/events/contextmenu.html দেখুন ।
গন্ধযুক্ত

3
@ অ্যান্ডি হাই অ্যান্ডি, প্রকাশটি (isRightMB?"was not" : "")হওয়া উচিত (isRightMB?"was" : "was not")। ঠিক? দয়া করে এটি পর্যালোচনা করতে সহায়তা করুন।
জো.ওয়াং

1
@ জো: মজার কথাটি কীভাবে 32 টি ভোট এবং 4 বছর কারও নজরে না নিয়ে যায় ;-) আমি মনে করি যে আমি ক্ষুব্ধ হতে পারি, যদিও - আমি যখন উত্তরটি লিখি তখন সকাল 00:30 ছিল!
অ্যান্ডি ই

1
মনে রাখবেন যে ম্যাক এফএফ সিটিআরএল + রাইটক্লিকটি বাম মাউস ক্লিক হিসাবে আসে (উদাঃ === 1), যখন ম্যাক ক্রোমে সিআরটিএল + রাইটক্লিকটি প্রত্যাশিত ডান মাউস ক্লিক হিসাবে আসবে (e.ctrlKey && e .যা === 3)।
এনডি

8
Chrome 59-এ, ডান-মাউস-বোতামটি ট্রিগার করে onmousedownএবং onmouseupতা নয় onclick। স্পষ্টতই, ক্রোমে, onclickকেবলমাত্র বাম-মাউস-বোতামের জন্য ট্রিগার করা হয়। (এবং হ্যাঁ ছেলেরা, আমি এটি একাধিকবার পরীক্ষা করেছি) ডান-মাউস-ক্লিক সনাক্ত করার জন্য আপনাকে হয় একত্রিত করতে হবে onmousedownএবং onmouseup, অথবা ব্যবহার করতে হবে oncontextmenu
ভেন্রিক্স

27

নিম্নলিখিত jQuery কোডটি দেখুন:

$("#myId").mousedown(function(ev){
      if(ev.which == 3)
      {
            alert("Right mouse button clicked on element with id myId");
      }
});

এর মান whichহবে:

  • বাম বোতামের জন্য 1
  • মাঝের বোতামটির জন্য 2
  • ডান বোতামের জন্য 3

2
আইওউ, ভয়ানক! কেন একরকম .whichনয় .button? ওও .button=> 0,1,2 ; which=> 1,2,3 । এটা ঠিক ভুল।
বেন ফিলিপ

11

আপনি ইভেন্টটি ব্যবহার করতে পারেন window.oncontextmenu, উদাহরণস্বরূপ:

window.oncontextmenu = function () {
  alert('Right Click')
}
<h1>Please Right Click here!</h1>


এটি এমবি বামেও আগুন দেয়
অ্যালেক্স

দুর্দান্ত +1, এখন আমি কীভাবে প্রসঙ্গ মেনুটি ব্লক করব? @ ব্যবহারকারী 12345678
শায়ান

2
@ শায়ান ই.প্রিভেন্টডাফল্ট ()
ব্রায়ান অ্যালান ওয়েস্ট

@ ব্রায়ান অ্যালানওয়েস্ট কি এটি jQuery? আমি কিভাবে এটি ব্যবহার করতে জানি না। window.oncontextmenu = function () { e.preventDefault() }কাজ হয়নি।
শায়ান

2
@ শায়ান, এটি কাঁচা জাভাস্ক্রিপ্ট নয় ... আপনি এটি এর মতো ব্যবহার করবেন ... উইন্ডো.অনক্টেক্সটেনামু = ফাংশন (ঙ)। ই.প্রিভেন্টডাফল্ট (); the প্রসঙ্গ মেনুতে (যেমন: ব্রাউজারের ডিফল্ট আচরণকে বাধা দেয়: ডান মাউস ক্লিক করুন বা ম্যাক ধরে রাখুন) টিপুন।
ব্রায়ান অ্যালান ওয়েস্ট

6

তবে, যদিও ডাব্লু 3 সি বলেছেন যে ক্লিক ইভেন্টের মাধ্যমে ডান ক্লিকটি সনাক্ত করা যায়, অনক্লিকটি সাধারণ ব্রাউজারগুলিতে ডান ক্লিকের মাধ্যমে ট্রিগার হয় না।

আসলে, মাউসডাউন অনমাউসআপ এবং অনকন্টেক্সটমেনুতে কেবল ক্লিক করুন ট্রিগার।

সুতরাং, আপনি "onContextMenu" রাইট ক্লিক ইভেন্ট হিসাবে বিবেচনা করতে পারেন। এটি একটি HTML5.0 মান।


1
হ্যাঁ, দুর্দান্ত সমাধানের মতো শোনায়, বিশেষত যদি আপনি নতুন ব্রাউজারগুলিকে লক্ষ্য করে থাকেন। আমি মনে করি এটি কেবল একটি এইচটিএমএল 5.0 নয়, এমনকি আই 5.5 এমনকি উপাদানগুলিতে এটি সমর্থন করে! ব্রাউজারগুলি এটি সমর্থন করে সে সম্পর্কে আরও এখানে বলা হয়েছে: quirksmode.org/dom/events/contextmenu.html
Ignas2526

5

আপনি যদি মাউসের ডান ক্লিকটি সনাক্ত করতে চান তবে আপনার MouseEvent.whichসম্পত্তিটি ব্যবহার করা উচিত নয় কারণ এটি মান -হীন এবং ব্রাউজারগুলির মধ্যে বিশাল অসঙ্গতি রয়েছে। ( MDN দেখুন ) আপনার পরিবর্তে ব্যবহার করা উচিত MouseEvent.button। এটি প্রদত্ত বোতামটি উপস্থাপন করে এমন একটি নম্বর প্রদান করে:

  • 0: প্রধান বোতাম টিপিত হয়, সাধারণত বাম বাটন বা আন-আরম্ভের অবস্থা
  • 1: সহায়ক বোতাম টিপে রাখা হয়, সাধারণত হুইল বোতাম বা মাঝের বোতামটি (উপস্থিত থাকলে)
  • 2: সেকেন্ডারি বোতাম টিপে, সাধারণত ডান বোতাম
  • 3: চতুর্থ বোতাম, সাধারণত ব্রাউজার ব্যাক বোতাম
  • 4: পঞ্চম বাটন, সাধারণত ব্রাউজার ফরোয়ার্ড বোতাম

MouseEvent.button কেবলমাত্র স্ট্যান্ডার্ড মাউসের চেয়ে আরও বেশি ইনপুট প্রকারগুলি পরিচালনা করে:

বোতামগুলি স্ট্যান্ডার্ড "বাম থেকে ডান" লেআউটে আলাদাভাবে কনফিগার করা যেতে পারে। বাম-হাতের ব্যবহারের জন্য কনফিগার করা মাউসের বোতামের ক্রিয়াগুলি বিপরীত হতে পারে। কিছু নির্দেশকারী ডিভাইসে কেবল একটি বোতাম থাকে এবং মূল, মাধ্যমিক, সহায়িকা ইত্যাদি নির্দেশ করতে কীবোর্ড বা অন্যান্য ইনপুট প্রক্রিয়া ব্যবহার করে অন্যদের বিভিন্ন ফাংশন এবং বোতামের মানগুলিতে ম্যাপযুক্ত অনেকগুলি বোতাম থাকতে পারে।

রেফারেন্স:

  1. https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which
  2. https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button

আশা করি অনুসন্ধান করার সময় আমি যে প্রথম উত্তরটি দেখেছি এটিই ছিল
গুনার মের আটারসসন

3

না, তবে আপনি "অনমাউসডাউন" ইভেন্টে মাউস বোতামটি কী ব্যবহার করেছেন তা সনাক্ত করতে পারেন ... এবং সেখান থেকে নির্ধারণ করুন যে এটি "রাইট ক্লিক" ছিল কিনা।


@ ব্রায়ান: ডান ক্লিকটি ট্রিগার করবে onmousedown, onmouseupএবং onclick। আপনি যদি ডান ক্লিকের মেনুটিকে ওভাররাইড করে দেখছেন তবে এই ইভেন্টগুলি আপনার ব্যবহার করা উচিত নয় (নীচে আমার উত্তর দেখুন)।
অ্যান্ডি ই

2

নিম্নলিখিত কোডটি jQuery ব্যবহার rightclickকরে ডিফল্ট mousedownএবং mouseupইভেন্টের উপর ভিত্তি করে একটি কাস্টম ইভেন্ট তৈরি করে । এটি নিম্নলিখিত বিষয়গুলি বিবেচনা করে:

  • মাউসআপ ট্রিগার
  • ট্রিগার কেবল তখনই একই উপাদানটিতে মাউসডাউন চাপলে
  • এই কোডটি বিশেষত জেএফএক্স ওয়েবভিউতেও কাজ করে (যেহেতু contextmenuইভেন্টটি সেখানে ট্রিগার করা হয়নি)
  • এটা আরম্ভ না যখন কীবোর্ডে contextmenu কী দিয়ে সমাধান মত (টেপা হলে on('contextmenu', ...)না

$(function ()
{ // global rightclick handler - trigger custom event "rightclick"
	var mouseDownElements = [];
	$(document).on('mousedown', '*', function(event)
	{
		if (event.which == 3)
		{
			mouseDownElements.push(this);
		}
	});
	$(document).on('mouseup', '*', function(event)
	{
		if (event.which == 3 && mouseDownElements.indexOf(this) >= 0)
		{
			$(this).trigger('rightclick');
		}
	});
	$(document).on('mouseup', function()
	{
		 mouseDownElements.length = 0;
	});
    // disable contextmenu
    $(document).on('contextmenu', function(event)
	{
		 event.preventDefault();
	});
});



// Usage:
$('#testButton').on('rightclick', function(event)
{
  alert('this was a rightclick');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="testButton">Rightclick me</button>


1

হ্যাঁ - এটা!

function doSomething(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alert('Rightclick: ' + rightclick); // true or false
}

ভাল - প্রযুক্তিগতভাবে এটি কোনও "ইভেন্ট" নয় তবে এটি ব্যবহার করা যেতে পারে।
চিকেন মিল্কবম্ব

@ টিমোথিখৌরি (এবং অন্য যে কেউ এখানে): এটি একটি সামঞ্জস্যপূর্ণ ইভেন্ট শ্রোতার ফাংশন। আপনি addEventListener এ দ্বিতীয় যুক্তি হিসাবে ফাংশনটি অবজেক্টটি নিজেই পাস করবেন , যা নির্দিষ্ট ইভেন্টের ঘটনাকে এটিকে ডাকবে । উদাহরণস্বরূপ:elem.addEventListener("click", doSomething)
জন ওয়েইজ

1

হ্যাঁ, অনকন্টেক্সটেমেনু সম্ভবত সেরা বিকল্প তবে সচেতন থাকবেন যে এটি মাউসের নিচে ট্রিগার করে যেখানে ক্লিকের ফলে মাউস আপ ট্রিগার হবে।

অন্যান্য সম্পর্কিত প্রশ্নগুলি ডাবল রাইট ক্লিক সম্পর্কে জিজ্ঞাসা করেছিল - যা ম্যানুয়াল টাইমার চেকিংয়ের বাইরে দৃশ্যত সমর্থিত নয়। ডান ডাবল ক্লিক করতে সক্ষম হবার একটি কারণ হ'ল যদি আপনার বাম-হাতের মাউস ইনপুট (বোতাম বিপরীত) সমর্থন করতে চান। ব্রাউজার বাস্তবায়নগুলি কীভাবে আমাদের উপলভ্য ইনপুট ডিভাইসগুলি ব্যবহার করা উচিত সে সম্পর্কে অনেক অনুমান করে।


1

ডান ক্লিকটি সম্পন্ন করার সহজ উপায়টি হ'ল ব্যবহার

 $('classx').on('contextmenu', function (event) {

 });

তবে এটি ক্রস ব্রাউজার সমাধান নয়, ব্রাউজারগুলি এই ইভেন্টের জন্য বিশেষত ফায়ারফক্স এবং আইই এর জন্য আলাদা আচরণ করে। আমি ক্রস ব্রাউজার সমাধানের জন্য নীচে সুপারিশ করব

$('classx').on('mousedown', function (event) {
    var keycode = ( event.keyCode ? event.keyCode : event.which );
    if (keycode === 3) {
       //your right click code goes here      
    }
});

1

এটি আগুন দেওয়ার সবচেয়ে সহজ উপায় এবং এটি অ্যাপ্লিকেশন ওয়েব ভিউ যেমন (সেফশার্প ক্রোমিয়াম ইত্যাদি ...) বাদে সমস্ত ব্রাউজারগুলিতে কাজ করে। আমি আশা করি আমার কোড আপনাকে সাহায্য করবে এবং সৌভাগ্য!

const contentToRightClick=document.querySelector("div#contentToRightClick");

//const contentToRightClick=window; //If you want to add it into the whole document

contentToRightClick.oncontextmenu=function(e){
  e=(e||window.event);
  e.preventDefault();
  console.log(e);
  
  return false; //Remove it if you want to keep the default contextmenu 
}
div#contentToRightClick{
  background-color: #eee;
  border: 1px solid rgba(0,0,0,.2);
  overflow: hidden;
  padding: 20px;
  height: 150px;
}
<div id="contentToRightClick">Right click on the box !</div>



0

ডান ক্লিক ইভেন্টের সময় আপনি যদি ফাংশনটি কল করতে চান তবে আমরা নিম্নলিখিতটি ব্যবহার করতে পারি

 <html lang="en" oncontextmenu="func(); return false;">
 </html>

<script>
function func(){
alert("Yes");
}
</script>


0

whichএবং / অথবা buttonসম্পত্তি ব্যবহার করার চেষ্টা করুন

ডেমো

function onClick(e) {
  if (e.which === 1 || e.button === 0) {
    console.log('Left mouse button at ' + e.clientX + 'x' + e.clientY);
  }
  if (e.which === 2 || e.button === 1) {
    console.log('Middle mouse button ' + e.clientX + 'x' + e.clientY);
  }
  if (e.which === 3 || e.button === 2) {
    console.log('Right mouse button ' + e.clientX + 'x' + e.clientY);
  }
  if (e.which === 4 || e.button === 3) {
    console.log('Backward mouse button ' + e.clientX + 'x' + e.clientY);
  }
  if (e.which === 5 || e.button === 4) {
    console.log('Forward mouse button ' + e.clientX + 'x' + e.clientY);
  }
}
window.addEventListener("mousedown", onClick);

কিছু তথ্য এখানে


-1

jQueryলাইব্রেরি ব্যবহার করে ইভেন্ট হ্যান্ডেল করুন

$(window).on("contextmenu", function(e)
{
   alert("Right click");
})

-1

মাউস থেকে ডান ক্লিক হ্যান্ডেল করতে, আপনি 'অনকন্টেক্সটেমেনু' ইভেন্টটি ব্যবহার করতে পারেন। নীচে একটি উদাহরণ দেওয়া হল:

 document.body.oncontextmenu=function(event) {
     alert(" Right click! ");
 };

ডান ক্লিক টিপলে উপরের কোডটি কিছু পাঠ্যকে সতর্ক করে। আপনি যদি ব্রাউজারটির ডিফল্ট মেনুটি না হাজির করতে চান তবে আপনি মিথ্যা রিটার্ন যুক্ত করতে পারেন; ফাংশনের সামগ্রীর শেষে। ধন্যবাদ।


কিছু ফ্রেমওয়ার্ককে উত্সাহিত করে কেবল উত্তর দিয়ে সাড়া দেওয়ার পরিবর্তে আপনার উত্তরটি আরও কার্যকর হবে যদি এতে ভ্যানিলা জেএস সমাধান থাকে এবং তারপরে সম্ভবত আপনার ফ্রেমওয়ার্কটি কীভাবে ব্যবহার করা সহজ হতে পারে তা বর্ণনা করার জন্য এটি বিশদভাবে বর্ণনা করা হয়েছে।
জ্যানিফ

ঠিক আছে ... সুপারিশের জন্য ধন্যবাদ .. ভ্যানিল্যা জেএস এর সাথে এটি আসলে খুব সহজ
সায়ণজ্যোতি দাস

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.