Javascript 如何使用Firefox CAPS策略阻止网页捕获按键?

Javascript 如何使用Firefox CAPS策略阻止网页捕获按键?,javascript,javascript-events,firefox4,Javascript,Javascript Events,Firefox4,我厌倦了网站阻止我的CMD+c和CMD+v复制/粘贴。尤其是当他们的javascript代码允许CONTROL+c和CONTROL+v通过而不被捕获时 我想使用Firefox4的新CAPS安全策略来创建一个规则,该规则为任何试图从任何元素的事件处理程序中捕获onkeypress的站点提供“noAccess”,并阻止它们读取e.which 这里是一段javascript代码,它阻止我将zipcode粘贴到文本区域,因为站点作者希望在该字段中显示“仅数字”,因此“CMD+v”(粘贴)被捕获并放在地板

我厌倦了网站阻止我的CMD+c和CMD+v复制/粘贴。尤其是当他们的javascript代码允许CONTROL+c和CONTROL+v通过而不被捕获时

我想使用Firefox4的新CAPS安全策略来创建一个规则,该规则为任何试图从任何元素的事件处理程序中捕获onkeypress的站点提供“noAccess”,并阻止它们读取e.which

这里是一段javascript代码,它阻止我将zipcode粘贴到文本区域,因为站点作者希望在该字段中显示“仅数字”,因此“CMD+v”(粘贴)被捕获并放在地板上

function numbersonly(myfield, e, dec) 
    var key, keychar;

    if (e) key = e.which;
    else return true;

    keychar = String.fromCharCode(key);
    // control keys
    if ((key==null) || (key==0) || (key==8) || 
        (key==9) || (key==13) || (key==27) )
        return true;

    else if ((("0123456789").indexOf(keychar) > -1))
        return true;

    else return false;
}
然后HTML代码将具有:

<INPUT NAME="zipcode" onKeyPress="return numbersonly(this, event)">

如何在Firefox4中设置策略,禁用站点调用此事件处理程序函数的功能

使用“Control de Scripts”扩展,我尝试将以下“block”添加到影响所有站点的“default”策略中,但没有一个可以让我在关注有此事件处理程序侦听的文本字段时使用Firefox元键组合:

HTMLInputElement.onKeyPress
窗口编号仅限
Window.onKeyPress
Window.onkeypress
event.preventDefault

现在,我们使用的是Firefox 14,而不是4。像我这样的Firefox终端用户对这种noAccess的支持是否变得更加可用


我正在寻找一个关于如何禁止使用CAP捕获按键事件的答案,而不是在每个网站上查找每个函数名并逐个禁用函数。

为什么不重新定义函数,使其不起任何作用。打开mozilla的javascript控制台,重新定义有问题的函数

numbersonly = function (a,b,c) {
  return true; 
}; 

如果有一个函数令您烦恼,只需打开javascript控制台并重新定义该函数。

要在firefow上打开它,只需在策略文件中添加一行,按ctrl+shift+k即可:

// This line creates a new policy named "stopnums"
user_pref("capability.policy.policynames", "stopnums");
// Add the offending site to the stopnums policy
user_pref("capability.policy.stopnums.sites", "http://www.exemple.com");
// Set the stopnums policy to deny a site from accessing "numbersonly"
user_pref("capability.policy.stopnums.numbersonly", "noAccess");
您可以在此处找到概述:

这里有一个完整的解释:

@Starx这一点也不令人反感。他把Javascript的一种特殊用法描述为愚蠢,世界上其他人在很大程度上都同意他的观点。他并不是对Javascript做一个笼统的陈述。我还想指出,在英语中,“愚蠢”一词绝对不是一个冒犯性的词。嘿,javascript一点也不愚蠢!!!,你必须考虑其他开发人员的意见,也许其他开发人员应该有一个很好的理由阻止其他字符比数字。@弗拉维奥:为了防止其他字符,是的。OP的投诉与命令键被(错误地)捕获有关,我想这只发生在Mac上。在允许Windows的Ctrl+V的同时,OSX的Cmd+V没有合法的理由被禁止。你可以在不捕获和阻止键盘输入的情况下阻止数字以外的字符。我更喜欢一种解决方案,它不需要我梳理其他人的javascript代码,寻找他们用来扰乱我的网络的函数名称经验。“NumberOnly”只是一个网站上的一个例子,它使用这种击键捕获事件来禁用我将CMD+v粘贴到zipcode字段的能力。您的建议要求我梳理每个网站上的代码,找到javascript函数的名称,然后将该函数名称添加到策略黑名单中。找到问题根源并且不需要我审核其他人的代码来查找名称的“正确”解决方案是使用策略badlist(而不是函数名)禁用击键捕获事件。怎么做?我认为这是不可能的,但我会继续寻找你:)