2014-12-30 175 views
4

在研究我的超级用户问题How can I selectively disable paste blockers时,我发现我遇到问题的特定站点似乎没有使用任何现有解决方案的任何方法。网页如何防止粘贴事件?

当使用dom.event.clipboardevents.enabled偏好或Disable clipboard manipulations插件在Firefox的全球性解决方案的工作,他们也同样遭受了问题,有合法的原因,网站可能要挂接到onpaste(如谷歌文档格式文本支持或Facebook的链接处理),所以我不希望完全禁用该功能。

我们发现(以及诸如德里克此前的Re-enabling Password Pasting on Annoying Web Forms由克里斯·贝利改进Re-enabling Password Pasting on Annoying Web Forms (v2))的解决方案,使用书签为选择性地禁用的paste blocking code功能不会出现与this page工作。

这让我想知道,petplanet网站如何禁用粘贴,为什么现有的解决方案不能与本网站一起使用,还有哪些其他方式可以防止粘贴阻塞?回答这些问题应该有助于我们编写一个全面的书签解决方案,这样这种有害的做法可以得到解决。

回答

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

2

可以jQuery的paste事件监听的事件和使用prevenrDefault()以防止事件发生。

this页,他们用下面的jQuery

$('#pwd, #pwd2').bind('paste',function(e){ 
    e.preventDefault(); 
    alert('Please type your password.') 
});  

打开Firebug,转到脚本选项卡,然后搜索字符串Please type your password.(Firebug的搜索栏,而不是浏览器的搜索栏。),你会发现以上码。和代码是存在的Logon.asp

Image
禁用它,您只需使用off方法这样$('#id1').off()。这解除了所有事件对于具有id='id1'