Переопределить комбинацию клавиш Ctrl + M Facebook в Firefox - PullRequest
8 голосов
/ 22 ноября 2011

Я работаю над букмарклетом , который позволит пользователям писать в любые поля ввода на нашем языке.Мы выбираем Ctrl+M для переключения раскладки между языком по умолчанию и нашим языком (вдохновлено Википедией).Он работал нормально почти на каждом сайте с хромом.Когда мы начали проверять с Firefox , мы обнаружили, что он не работает только в Facebook .

Кроме того, Facebook ловит Ctrl+M за пределами области действия window.Например, сформируйте адресную строку, панель поиска, консоль Firebug и т. Д.

Я пробовал использовать raw javascript, jQuery, а также плагин 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;
        });
    }

})();

1 Ответ

4 голосов
/ 25 ноября 2011

Вы не можете делать это в клиентской сети из соображений безопасности, вы можете кодировать что-либо на JS или JQ или на любом другом языке, который вы хотите, но MOZ никогда не позаботится о вашем коде.

Будьте осторожны, во-первых, браузер «компилирует» ваш код и работает с ним, а во-вторых, вы можете изменить сам браузер. По этим причинам есть «дополнение». Например, вы не можете изменить ядро ​​программирования Visual Studio в V.S. : 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, ни один.

Возможно, этот URL-адрес может помочь вам, но я предлагаю вам попробовать запросить изменения в MOZ, а не запрашивать код Javascript.

http://www -archive.mozilla.org / Unix / customizing.html # клавиши

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...