Safari에서 사용자 정의 Javascript 키 바인딩을 비활성화 할 수 있습니까? 일부 웹 사이트

나는 Emacs를 사용한지 수십 년의 경험을 가지고 있으므로 Mac OS X에서 텍스트 편집을위한 Emacs와 같은 키 바인딩이 매우 좋습니다. 불행히도, 일부 웹 사이트 (ahem)는 Javascript로 이러한 웹 사이트를 재정의하기로 선택합니다. 예를 들어, 그중 하나는 한 문자로 돌아 가지 않고 controlB텍스트 를 삽입합니다 **strong text**.

Safari에서 표준 OS X 키 바인딩을 다시 매핑하려는 Javascript 키 바인딩을 무시하도록하는 방법이 있습니까?



답변

다음은 meta의 Rob W 스크립트입니다. cntrl- * 만 차단하도록 업데이트되었고 사용자 스크립트 실행을위한 사파리 확장 인 NinjaKit과 함께 작동하도록 수정되었습니다.

닌자 키트 :
https://github.com/os0x/NinjaKit

스크립트:

// ==UserScript==
// @name           Cya WMD shortcuts
// @namespace      Rob W
// @version        1.0
// @include          http://apple.stackexchange.com/*
// @include          http://stackoverflow.com/*
// @include          http://superuser.com/*
// @include          http://meta.superuser.com/*
// @include          http://serverfault.com/*
// @include          http://meta.serverfault.com/*
// @include          http://askubuntu.com/*
// @include          http://meta.askubuntu.com/*
// @include          http://*.stackexchange.com/*
// @include          http://answers.onstartups.com/*
// @include          http://meta.answers.onstartups.com/*
// @include          http://stackapps.com/*
// @run-at         document-end
// @grant          none
// ==/UserScript==
(function () {
    var p = document.getElementById('wmd-input');
    console.log("wmd-input:" + p);
    if (p) {
        p = p.parentNode;

        function ignore(e) {
            if (e.ctrlKey) {
                e.stopPropagation();
            }
        }
        p.addEventListener('keydown', ignore, true);
        p.addEventListener('keypress', ignore, true);
        p.addEventListener('keyup', ignore, true);
    }
})();

답변

내가 사용한 지 오래 되었지만 Privoxy 프록시 서버에는 자바 스크립트를 수정하여 동작을 변경하는 기능이 있습니다. 프록시 서버를 실행하려는 경우 이는 옵션입니다.

나는 철저하게 보이지는 않았지만 privoxy처럼 콘텐츠 (xml, html, CSS 또는 javascript)를 다시 작성하는 브라우저 플러그인을 보지 못했습니다. Privoxy의 웹 페이지에서 js-annoyances 필터를 찾으십시오. 여기에서 자바 스크립트를 다시 작성하는 예를 찾을 수 있습니다.

아마도 비슷한 기능을 제공하는 브라우저 플러그인 형태로 더 현대적인 구현이 있지만 privoxy는이 사용 사례에서 잘 작동했습니다.