Можно ли отключить пользовательские сочетания клавиш Javascript в Safari?


14

У меня есть опыт десятилетней работы с Emacs, поэтому Emacs-подобные сочетания клавиш для редактирования текста в Mac OS X очень хороши. К сожалению, некоторые веб-сайты (гм) решили переопределить их с помощью Javascript. Например, один из них заставляет controlBвставлять текст **strong text**, а не возвращаться назад на один символ.

Есть ли способ заставить Safari игнорировать привязки клавиш Javascript, которые пытаются переназначить стандартные сочетания клавиш OS X?


Я не знаю никакого общего способа сделать это, но вы могли бы использовать GreaseKit, чтобы отключить ярлыки ОМУ. См. Есть ли способ отключить горячие клавиши? - Переполнение стека мета .
Lri

Спасибо за ссылку! Огорчительно видеть, что они думают, что это хорошо только потому, что люди не жаловались достаточно. (Я использую сайты SE в течение многих лет, и я не осознавал, что мне нужно начать жаловаться в первый день, чтобы мой голос был услышан.) Однако я не решаюсь добавлять какие-либо расширения веб-браузера, так как с первой части любая проблема с веб-браузером - «отключить все расширения».
Кен

1
Я с Кеном. Я лично не могу сосчитать, сколько раз мне приходилось использовать «отмену», потому что мои руки забыли, что я был на сайте SE: S
ephsmith

Я собирался предложить, чтобы вы могли отключить JavaScript ... Это исправило вашу проблему, но создало новую - я больше не мог оставлять комментарии на StackExchange ... = P
daviewales

1
Этот вопрос о сайте здесь? или про отключение javascript везде? Я мог бы переместить его в нашу мета-версию как отчет об ошибке, но для этого сайта уже есть несколько запросов. meta.stackexchange.com/questions/3245/...
bmike

Ответы:


7

Вот сценарий Роба В. из meta , обновленный до блока cntrl- * и исправленный так, что он работает с NinjaKit, который является расширением safari для запуска пользовательских сценариев.

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);
    }
})();



1

Прошло много времени с тех пор, как я его использовал, но прокси-сервер Privoxy имеет возможность изменять javascript для изменения поведения. Если вы хотите запустить прокси-сервер, это вариант.

Я выглядел (хотя и не полностью) и не увидел плагин для браузера, который переписывал контент (xml, html, CSS или javascript), как это делает privoxy. На веб-странице Privoxy найдите фильтр js-annoyances. Здесь вы найдете примеры переписывания javascript.

Возможно, есть более современная реализация в виде плагина для браузера, который предоставляет аналогичную функцию, но privoxy обычно работал для этого случая использования.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.