js右击弹框实现进行复制粘贴功

js右击弹框实现进行复制粘贴功能

js右击表格弹框实现进行复制粘贴功能

效果图:文章下有下载地址

第三方插件:clipboard.js
jquery 扩展右击事件

只需要注入两个js,和一段css即可实现

<link src="common.css"></link>
<script src="clipboard.js"></script>
<script src="mouseRight.min.js"></script>

css引用

common.css

/* 复制粘贴的css  */
.wrap-ms-right{
	list-style: none;
	position: absolute;
	top: 0;
	left: 0;
	z-index: 9999;
	padding: 5px 0;
	min-width: 80px;
	margin: 0;
	display: none;
	font-family: "微软雅黑";
	font-size: 14px;
	background-color: #fff;
	border: 1px solid rgba(0, 0, 0, .15);
	box-sizing: border-box;
	border-radius: 4px;
	-webkit-box-shadow: 0 4px 4px rgba(0, 0, 0, 0.1);
	-moz-box-shadow: 0 4px 4px rgba(0, 0, 0, 0.1);
	-ms-box-shadow: 0 4px 4px rgba(0, 0, 0, 0.1);
	-o-box-shadow: 0 4px 4px rgba(0, 0, 0, 0.1);
	box-shadow: 0 4px 4px rgba(0, 0, 0, 0.1);
}
.ms-item{
    height: 30px;
    line-height: 30px;
    text-align: center;
    cursor: pointer;
}
.ms-item:hover{
    background-color: #343a40;
    color: #FFFFFF;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}

js引用

mouseRight.min.js

(function (b, a) {
    b.prototype.mouseRight = function (c, h) {
        var f, d, e, g, v;
        e = this;
        f = {menu: [{},], ele: "wrap-ms-right", ele_item: "ms-item",};
        d = b.extend({}, f, c);
//        b(this).each(function () {
            (function i() {
                var n = b("<div></div>");
                n.attr("class", d.ele);
                for (var m = 0; m < d.menu.length; m++) {
                    var k = b("<li></li>");
                    k.addClass(d.ele_item);
                    var l = b("<i></i>");
                    k.attr("data-item", m);
                    l.addClass(d.menu[m].icon);
                    l.attr("data-item", m);
                    l.appendTo(k);
                    k.appendTo(n);
                    l.after("&nbsp; " + d.menu[m].itemName)
                }
                n.prependTo("body");
                var j = b("<div></div>");
                j.attr("class", "shade");
                j.prependTo("body")
            })();
            a.oncontextmenu = function () {
                return false
            };
            /*b(this).mousedown(function (j) {
                if (j.which === 3) {
                    v = j.currentTarget.innerHTML;
                }
            });*/
            b("." + d.ele).click(function (l) {
                var j = parseInt(b(l.target).attr("data-item"));
                for (var k = 0; k < d.menu.length; k++) {
                    if (j == k) {
                        d.menu[k].callback(l);
                        b("." + d.ele).css({"display": "none"})
                    }
                }
            });
            /*b(".shade").click(function () {
                b("." + d.ele).css({"display": "none"})
            })*/
//        });
        return this
    }
})(jQuery, window);


//鼠标右击事件
$(function(){
	$('body').append("<div class = 'btn' style='display: none'>Copy</div>");
    var copyValue="";
    //去除浏览器的右击出现的框
    $('body').on('mousedown',"td",function(event){
       if(1 == event.which){
           $(".wrap-ms-right").css({"display": "none"})
       }else if (3 == event.which){
           if (event.target.nodeName == "TD"){
        	   copyValue = "";
        	   $(".wrap-ms-right").css({"display": "block", "top": event.pageY + "px", "left": event.pageX + "px"});
        	   if($(this).children().length > 0){
        		   if($(this).children()[0].tagName == "SELECT"){
        			   copyValue= $(this).children().find("option:selected").text();
        		   }else{
        			   copyValue= $(this).children().html();
        		   }
        	   }else{
        		   copyValue = event.currentTarget.innerHTML;
        	   }
        	   copyValue=$.trim(copyValue);
               $(this).mouseRight({menu: [{
                   itemName: "复制",
                   icon:"fa fa-files-o",
                   callback: function(e) {
                       $(".btn").trigger("click");
                   }
               }
               ]});
           }
       }
    })
    var clipboard = new ClipboardJS('.btn', {
       text: function() {
           return copyValue;
       }
    });
    clipboard.on('success', function(e) {
        console.log(e);
    });
    clipboard.on('error', function(e) {
    	e.clearSelection();
        console.log(e);
    });
});

clipboard.js 第三方插件

/*!
 * clipboard.js v2.0.4
 * https://zenorocha.github.io/clipboard.js
 * 
 * Licensed MIT © Zeno Rocha
 */

资源下载地址
https://download.csdn.net/download/shiguang_zhiren/11169416

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如何实现? 您可以使用 Vue3 的 v-contextmenu 指令来实现鼠标右击弹框能。具体方法如下: 1. 在需要绑定右击菜单的元素上添加 v-contextmenu 指令,指定需要触发的方法名。 ```html <div v-contextmenu="showContextMenu">右击我弹出菜单</div> ``` 2. 在 Vue 实例中定义 showContextMenu 方法,该方法会接收一个 event 参数,用于获取鼠标右击事件的坐标。在方法中可以动态设置菜单的位置和内容。 ```javascript methods: { showContextMenu(event) { event.preventDefault(); // 阻止默认事件 const menu = document.querySelector('.context-menu'); menu.style.top = event.pageY + 'px'; // 根据鼠标坐标设置菜单位置 menu.style.left = event.pageX + 'px'; menu.classList.add('show'); // 显示菜单 // 在此处可以根据需要动态设置菜单内容 } } ``` 3. 定义右击菜单的 HTML 结构,并使用 CSS 样式控制菜单的显示和隐藏。 ```html <div class="context-menu"> <!-- 菜单项 --> <div>菜单项1</div> <div>菜单项2</div> </div> ``` ```css .context-menu { position: fixed; box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.3); background-color: #fff; display: none; } .context-menu.show { display: block; } ``` 4. 最后,在 mounted 钩子函数中为 document 添加 mousedown 事件监听器,在点击页面其他区域时隐藏菜单。 ```javascript mounted() { document.addEventListener('mousedown', () => { const menu = document.querySelector('.context-menu'); menu.classList.remove('show'); // 隐藏菜单 }); } ``` 这样,当用户右击绑定 v-contextmenu 指令的元素时,就会触发 showContextMenu 方法,弹出自定义右击菜单。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值