8

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

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

这是一个 javascript 代码片段,它阻止我将邮政编码粘贴到文本区域,因为网站作者希望该字段中的“仅数字”,因此“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”扩展,我尝试将以下“块”添加到影响所有站点的“默认”策略中,但没有一个允许我在专注于具有此的文本字段时使用 Firefox 元键组合事件处理程序监听:

HTMLInputElement.onKeyPress
Window.numbersonly
Window.onKeyPress
Window.onkeypress
event.preventDefault

现在我们升级到 Firefox 14 而不是 4。对于像我这样的最终 Firefox 用户来说,对这种 noAccess 的支持是否变得更加可用/可用?

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

4

3 回答 3

3

为什么不重新定义函数,让它什么都不做。打开 mozilla 的 javascript 控制台并重新定义有问题的函数。

numbersonly = function (a,b,c) {
  return true; 
}; 
于 2012-08-02T20:17:00.710 回答
2

如果有让您烦恼的函数,只需打开一个 javascript 控制台并重新定义该函数。
要在 firefow 上打开它,请按 ctrl+shift+k

于 2012-08-05T13:16:02.537 回答
1

只需在您的策略文件中添加一行:

// 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");

您可以在此处找到概述: https ://developer.mozilla.org/en-US/docs/Mozilla/Preferences/A_brief_guide_to_Mozilla_preferences?redirectlocale=en-US&redirectslug=A_Brief_Guide_to_Mozilla_Preferences#modifying

在这里有一个完整的解释: http ://www.mozilla.org/projects/security/components/ConfigPolicy.html

于 2012-08-06T09:16:35.807 回答