Überschreiben Sie die Tastenkombination Strg + M von Facebook in Firefox

  • Ich arbeite gerade an einem Bookmarklet , das die Benutzer zulässt um auf Eingabefelder in unserer Sprache zu schreiben. Wir wählen Ctrl+M, um zwischen dem Standard und unserer Sprache umzuschalten (Inspiration by Wikipedia). In fast jeder Website mit Chrom funktionierte es einwandfrei. Als wir mit Firefox nachprüfen, haben wir festgestellt, dass dies nur in Facebook fehlschlägt.

    Außerdem fängt Facebook die Ctrl+M außerhalb des Bereichs window . Bilden Sie beispielsweise die Adressleiste, die Suchleiste, die Firebug-Konsole usw.

    Ich habe es mit rohem Javascript, jQuery und auch mit dem jQuery Hotkeys - Plugin von John Resig , aber kein Glück : (

    Hier ist eine Version, die ich ausprobiert habe. Sie können sie zu Testzwecken auf Ihrer Firebug-Konsole ausführen -

     (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;
            });
        }
    
    })();
     
    22 November 2011
    Rifat
1 answer
  • Sie können dies aus Sicherheitsgründen NICHT im clientseitigen Web tun. Sie können alles in JS oder JQ oder in einer beliebigen Sprache codieren, aber MOZ kümmert sich nie um Ihren Code.

    Achten Sie darauf, dass der Browser Ihren Code "kompiliert" und mit ihm arbeitet. Außerdem können Sie den Browser selbst ändern. Aus diesem Grund gibt es das "Add-On". Sie können beispielsweise den Kernel der Visual Studio-Programmierung in V.S. nicht ändern. : D

    ABER ...

    ... Sie können den Benutzer bitten, die Schlüssel erneut zu binden, Sie haben 3 Möglichkeiten dies zu tun:

    1) Installieren eines MOZ-Add-Ons (oder Ihres eigenen Addons)

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

    3) Installieren einer Tastenkombination auf Betriebssystemebene mit höherer Priorität als die App (in diesem Fall MOZ ) (Sie können es mit C # machen). Die Kombination aus Alt + Tab ist ein Beispiel für eine Verknüpfung auf hoher Ebene oder "Prnt Scrn".

    Es gibt keine Möglichkeit, dies mit about: config zu tun >

    Vielleicht hilft Ihnen diese URL, aber ich schlage vor, Sie fragen nach Änderungen in MOZ und nicht nach Javascript-Code.

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

    25 November 2011
    Leandro Tupone