Javascript?、Vue禁止鼠標(biāo)右鍵點(diǎn)擊事件實(shí)例
工作中碰見了奇葩的需求(見多了,也就不奇葩了哈哈)—— 用戶讓加上鼠標(biāo)右鍵點(diǎn)擊事件
1、oncontextmenu 事件
定義 :oncontextmenu 事件在元素中用戶右擊鼠標(biāo)時(shí)觸發(fā)并打開上下文菜單。
HTML :
<element oncontextmenu="myScript">
JavaScript :
object.oncontextmenu=function(){ myScript };
JavaScript 中, 使用 addEventListener() 方法:
object.addEventListener("contextmenu", myScript);
注意: Internet Explorer 8 及更早 IE 瀏覽器版本不支持 addEventListener() 。
2、JS實(shí)例
添加右擊事件 阻止默認(rèn)行為—— oncontextmenu / contextmenu
document.addEventListener("oncontextmenu",function(evt){ console.log("右鍵單擊,自定義右鍵菜單") evt.preventDefault() })
注意:所有瀏覽器都支持 oncontextmenu 事件, contextmenu 元素只有 Firefox 瀏覽器支持。
3、Vue實(shí)例
在 Vue.js 中,要實(shí)現(xiàn)右鍵點(diǎn)擊事件,可以使用 Vue 的 contextmenu
指令來監(jiān)聽上下文菜單事件。這個(gè)指令會(huì)在用戶右鍵點(diǎn)擊元素時(shí)觸發(fā)。以下是一個(gè)示例:
HTML :
<div @contextmenu="showContextMenu" class="right-clickable"> Right-click me <div v-if="contextMenuVisible" class="context-menu"> <!-- 右鍵菜單的內(nèi)容 --> <ul> <li @click="menuItemClicked('Option 1')">Option 1</li> <li @click="menuItemClicked('Option 2')">Option 2</li> <li @click="menuItemClicked('Option 3')">Option 3</li> </ul> </div> </div>
JavaScript :
export default { data() { return { contextMenuVisible: false, contextMenuPosition: { x: 0, y: 0 } }; }, methods: { showContextMenu(event) { // 阻止默認(rèn)右鍵菜單 event.preventDefault(); // 獲取右鍵點(diǎn)擊的位置 this.contextMenuPosition.x = event.clientX; this.contextMenuPosition.y = event.clientY; // 顯示右鍵菜單 this.contextMenuVisible = true; }, hideContextMenu() { // 隱藏右鍵菜單 this.contextMenuVisible = false; }, menuItemClicked(option) { // 處理菜單選項(xiàng)點(diǎn)擊事件 console.log('Clicked:', option); this.hideContextMenu(); } }, mounted() { // 監(jiān)聽點(diǎn)擊頁面其他部分,以隱藏右鍵菜單 window.addEventListener('click', this.hideContextMenu); }, beforeDestroy() { // 移除監(jiān)聽器,以防止內(nèi)存泄漏 window.removeEventListener('click', this.hideContextMenu); } };
CSS:
.right-clickable { position: relative; } .context-menu { position: absolute; background-color: #fff; border: 1px solid #ccc; padding: 5px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); z-index: 1000; } .context-menu ul { list-style: none; padding: 0; margin: 0; } .context-menu li { padding: 5px 10px; cursor: pointer; }
這是一個(gè)簡(jiǎn)單的示例,展示了如何使用 contextmenu
指令來實(shí)現(xiàn)右鍵點(diǎn)擊事件和彈出自定義的右鍵菜單。在這個(gè)示例中,當(dāng)用戶右鍵點(diǎn)擊 "Right-click me" 文本時(shí),會(huì)顯示一個(gè)自定義的菜單。右鍵菜單將會(huì)在用戶點(diǎn)擊其他地方或選擇菜單項(xiàng)后隱藏。
運(yùn)行效果圖:
總結(jié)
到此這篇關(guān)于Javascript 、Vue禁止鼠標(biāo)右鍵點(diǎn)擊事件的文章就介紹到這了,更多相關(guān)Js Vue禁止鼠標(biāo)右鍵點(diǎn)擊事件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
24個(gè)解決實(shí)際問題的ES6代碼片段(小結(jié))
這篇文章主要介紹了24個(gè)解決實(shí)際問題的ES6代碼片段,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02解析javascript圖片懶加載與預(yù)加載的分析總結(jié)
本篇文章介紹了javascript圖片懶加載與預(yù)加載的分析,詳細(xì)的介紹了懶加載和預(yù)加載的問題,有需要的可以了解一下。2016-10-10js獲取觸發(fā)事件元素在整個(gè)網(wǎng)頁中的絕對(duì)坐標(biāo)(示例代碼)
這篇文章主要介紹了js獲取觸發(fā)事件元素在整個(gè)網(wǎng)頁中的絕對(duì)坐標(biāo)。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12javascript中window.open在原來的窗口中打開新的窗口(不同名)
本文給大家介紹使用window.open在原來的窗口中打開新的窗口,涉及到win.open新窗口相關(guān)知識(shí),對(duì)本文感興趣的朋友參考下2015-11-11JS實(shí)現(xiàn)隨機(jī)生成字符串(可指定長(zhǎng)度)的示例代碼
本文主要介紹了JS實(shí)現(xiàn)隨機(jī)生成字符串(可指定長(zhǎng)度)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08JavaScript防抖與節(jié)流超詳細(xì)全面講解
在開發(fā)中我們經(jīng)常會(huì)遇到一些高頻操作,比如:鼠標(biāo)移動(dòng),滑動(dòng)窗口,鍵盤輸入等等,節(jié)流和防抖就是對(duì)此類事件進(jìn)行優(yōu)化,降低觸發(fā)的頻率,以達(dá)到提高性能的目的。本文就教大家如何實(shí)現(xiàn)一個(gè)讓面試官拍大腿的防抖節(jié)流函數(shù),需要的可以參考一下2022-10-10