Rif*_*fat 8 javascript firefox jquery facebook jquery-plugins
我正在开发一个bookmarklet,它允许用户在我们语言的任何输入字段上书写.我们选择Ctrl+M
在默认和我们的语言之间切换布局(灵感来自维基百科).几乎每个有chrome的网站都运行良好.当我们开始使用Firefox检查时,我们发现它只能在Facebook中失败.
此外,Facebook
Ctrl+M
从window
范围外捕获.比如,形成地址栏,搜索栏,firebug控制台等.
我尝试过原始的javascript,jQuery以及John Resig的jQuery Hotkeys插件,但没有运气:(
这是我试过的版本.您可以在Firebug控制台上运行它以进行测试 -
(function(){
var noConflictMode = false;
if(typeof $ !== 'undefined') noConflictMode = true;
if(typeof jQuery === 'undefined') {
var root = (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]);
var ns = document.createElementNS && document.documentElement.namespaceURI;
var script = ns ? document.createElementNS(ns, 'script') : document.createElement('script');
script.type = 'text/javascript';
script.onreadystatechange = function () {
if (this.readyState == 'complete') test();
}
script.onload= test;
script.src= 'https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.min.js';
root.appendChild(script);
} else {
test();
}
function test() {
if(noConflictMode) jQuery.noConflict();
jQuery(window).on('keydown keyup keypress', function(e){
e.preventDefault();
// For Firefox
e.stopPropagation();
// Extra effort :|
e.stopImmediatePropagation()
e.cancelBubble = true;
console.log(e);
return false;
});
}
})();
Run Code Online (Sandbox Code Playgroud)
出于安全原因,您不能在客户端 Web 上执行此操作,您可以使用 JS 或 JQ 或您想要的任何语言编写任何内容,但 MOZ 永远不会处理您的代码。
请注意,一件事是浏览器“编译”您的代码并使用它,另一件事是您可以更改浏览器本身。由于这个原因,就有了“附加组件”。例如,你不能在VS中更改Visual Studio编程的内核:D
但...
...您可以要求用户重新绑定密钥,您有 3 种方法可以做到这一点:
1)安装 MOZ 插件(或您自己的插件)
2)使用:http://mxr.mozilla.org/seamonkey/source/dom/public/idl/events/nsIDOMKeyEvent.idl
3) 在操作系统级别安装比应用程序优先级更高的快捷键(在本例中为 MOZ)(可以使用 C# 来完成)。Alt+tab 组合是高级快捷方式的示例,或“Prnt Scrn”
about:config 也没有办法做到这一点。
也许这个网址可以帮助你,但我建议你尝试要求 MOZ 中的更改而不是要求 Javascript 代码。
http://www-archive.mozilla.org/unix/customizing.html#keys