网页如何阻止粘贴事件?

时间:2014-12-30 11:09:54

标签: javascript jquery html paste

在研究我的超级用户问题How can I selectively disable paste blockers时,我发现我遇到问题的特定网站似乎没有使用任何现有解决方案所期望的任何方法。

虽然在FireFox中使用dom.event.clipboardevents.enabled首选项或Disable clipboard manipulations插件的全局解决方案有效,但他们也遇到了 网站可能想要的合法原因的问题挂钩到onpaste(例如谷歌文档富文本支持或脸书链接处理)所以我不希望完全禁用该功能。

我们找到的解决方案(例如Derek Prior Re-enabling Password Pasting on Annoying Web Forms和Chris Bailey改进的Re-enabling Password Pasting on Annoying Web Forms (v2))使用bookmarklet来有选择地禁用paste blocking code don&#的功能39; t似乎与this page一起使用。

这让我很奇怪, petplanet 网站如何禁用粘贴,为什么现有解决方案不能与此网站一起使用,以及有哪些其他方法可以阻止粘贴阻止?回答这些问题应该有助于我们编写一个全面的书签解决方案,因此这个有害的实践可以很好地解决。

2 个答案:

答案 0 :(得分:2)

您可以使用jQuery libusb_get_configuration事件来监听该事件,并使用paste来阻止该事件。

this页面中,他们使用了以下jQuery

prevenrDefault()

打开Firebug,转到Scripts选项卡,然后搜索字符串$('#pwd, #pwd2').bind('paste',function(e){ e.preventDefault(); alert('Please type your password.') }); (Firebug搜索栏,而不是浏览器搜索栏。),您将找到上面的代码。代码存在logon.asp

Image
停用,只需使用此Please type your password.之类的off方法即可。这将取消绑定具有$('#id1').off()

的元素的所有事件

答案 1 :(得分:0)

据我所知,你只能用JavaScript“禁用”这些东西。

我可以想象你找不到真正的答案,你可以这样做:

var keys = [];
window.addEventListener("keydown",
    function(e){
        keys[e.keyCode] = true;
        checkCombinations(e);
    },
false);

window.addEventListener('keyup',
    function(e){
        keys[e.keyCode] = false;
    },
false);

function checkCombinations(e){
    // try and prevent cntrl+v (paste)
    if(keys["v".charCodeAt(0)] && e.ctrlKey){
        alert("You're not allowed to paste");
        e.preventDefault();
    }
}

来源:Get a list of all currently pressed keys in Javascript