我厌倦了阻止我的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 metakey组合有这个事件处理程序监听:
HTMLInputElement.onKeyPress
Window.numbersonly
Window.onKeyPress
Window.onkeypress
event.preventDefault
现在我们用的是Firefox 14而不是4.这种noAccess的支持是否已经更多可用/可用于结束像我这样的Firefox用户?
我正在寻找一个关于如何禁止使用CAPS进行按键事件捕获的答案,而不是搜索每个网站上的每个功能名称并逐个禁用功能。
答案 0 :(得分:3)
为什么不重新定义函数,使其无效。打开mozilla的javascript控制台,然后重新定义违规功能。
numbersonly = function (a,b,c) {
return true;
};
答案 1 :(得分:2)
如果有令您烦恼的功能,只需打开一个javascript控制台并重新定义该功能即可 要在firefow上打开它,请按ctrl + shift + k
答案 2 :(得分: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");
这里有一个完整的解释: http://www.mozilla.org/projects/security/components/ConfigPolicy.html