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

标签 javascript jquery facebook firefox jquery-plugins

我正在研究 bookmarklet这将使用户可以用我们的语言在任何输入字段上书写。我们选择 Ctrl+M 在默认布局和我们的语言之间切换布局(受维基百科启发)。它在几乎所有使用 chrome 的网站上都运行良好。当我们开始检查 Firefox 时,我们发现它只在 Facebook 中失败。

Moreover, Facebook catches the Ctrl+M from outside the window scope. Like, form the address bar, search bar, firebug console, etc.

我尝试过使用原始 javascript、jQuery 以及 jQuery Hotkeys插件 John Resig但没有运气:(

这是我试过的版本。您可以在 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;
        });
    }

})();

最佳答案

出于安全原因,您不能在客户端 Web 上执行此操作,您可以使用 JS 或 JQ 或任何您想要的语言编写任何代码,但 MOZ 永远不会处理您的代码。

注意,一件事是浏览器“编译”您的代码并使用它,另一件事是您可以更改浏览器本身。出于这个原因,有“附加组件”。 例如,你不能在 V.S. 中更改 Visual Studio 编程的内核。 :D

但是...

...您可以要求用户重新绑定(bind) key ,您有 3 种方法可以做到这一点:

1) 安装 MOZ 插件(或您自己的插件)

2) 使用:http://mxr.mozilla.org/seamonkey/source/dom/public/idl/events/nsIDOMKeyEvent.idl

3) 在操作系统级别安装快捷键b,其优先级高于应用程序(在本例中为MOZ)(您可以使用C# 完成)。 Alt+tab 组合是高级快捷方式或“Prnt Scrn”的示例

about:config 无法做到这一点,也没有。

也许这个 url 可以帮助你,但我建议你尝试在 MOZ 中请求更改而不是请求 Javascript 代码。

http://www-archive.mozilla.org/unix/customizing.html#keys

关于javascript - 在 Firefox 中覆盖 Facebook 的 Ctrl+M 热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8220605/

相关文章:

javascript - 用户可以操纵 javascript 来覆盖 S3 crossdomain.xml 吗?

jquery - 在 spring mvc 环境中使用查询使用 ajax 调用的结果填充列表框选项。

jquery - 使用 jQuery 模拟 AJAXy 单击以选择菜单

android - Facebook Auth 有时会返回 OnCancel

Facebook 点赞框突然右对齐

java - Android - Java - 发送 facebook 聊天消息的 Intent (facebook 禁用 xmpp)

javascript - 重定向到另一个页面后如何保留 toast bulma

java - 如何将数据从小程序传递到网页客户端代码?

Javascript 在每个输出数组值的末尾附加换行符

javascript - 反转字符串中的单词