Можно отключить пользовательские привязки Javascript в Safari?
У меня есть несколько десятилетий опыта использования Emacs, поэтому Emacs-подобный keybindings для редактирования текста в Mac OS X очень приятный. К сожалению, некоторые веб-сайты (гм) предпочитают переопределять их с помощью Javascript. Например, один из них делает control B вставить текст **strong text**
, скорее чем возврат одного символа.
Есть ли способ заставить Safari игнорировать ключевые слова Javascript, которые пытаются переназначить стандартные клавиши OS X?
2 ответа
Вот скрипт Rob W из мета , обновляется, чтобы блокировать только cntrl- * и фиксироваться так, чтобы он работал с NinjaKit, который является расширением сафари для запуска пользовательских скриптов.
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 имеет функцию изменения javascript изменить поведение. Если вы хотите запустить прокси-сервер, это вариант.
Я действительно смотрел (хотя и не исчерпывающе), и не видел плагина браузера, который переписывал контент (xml, html, CSS или javascript), как privoxy. На веб-странице Privoxy найдите фильтр js-annonyances. Вот где вы найдете примеры переписывания javascript.
Возможно, существует более современная реализация в виде плагина браузера, который предоставляет аналогичную функцию, но privoxy используется для работы в этом случае.