在Firefox中覆盖Facebook的Ctrl + M热键

Rif*_*fat 8 javascript firefox jquery facebook jquery-plugins

我正在开发一个bookmarklet,它允许用户在我们语言的任何输入字段上书写.我们选择Ctrl+M在默认和我们的语言之间切换布局(灵感来自维基百科).几乎每个有chrome的网站都运行良好.当我们开始使用Firefox检查时,我们发现它只能在Facebook中失败.

此外,Facebook Ctrl+Mwindow 范围外捕获.比如,形成地址栏,搜索栏,firebug控制台等.

我尝试过原始的javascript,jQuery以及John ResigjQuery 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)

Lea*_*dro 4

出于安全原因,您不能在客户端 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