可以在Safari中禁用自定义Javascript绑定吗?


14

我有几十年使用Emacs的经验,因此在Mac OS X上用于文本编辑的类似Emacs的键绑定非常好。不幸的是,某些网站(糟糕)选择用Javascript覆盖它们。例如,其中之一使controlB插入文本**strong text**,而不是返回一个字符。

有什么方法可以使Safari忽略试图重新映射标准OS X绑定的Javascript绑定?


我不知道执行此操作的一般方法,但是可以使用GreaseKit禁用WMD快捷方式。请参阅是否可以禁用热键?-元堆栈溢出
Lri 2012年

感谢您的链接!令人沮丧的是,他们只因为人们抱怨不足而认为很好。(我已经使用SE网站多年了,但我没有意识到我需要在第一天就开始抱怨才能听到我的声音。)但是,自从第一部分开始,我一直很犹豫是否添加任何Web浏览器扩展。任何Web浏览器问题诊断都是“禁用所有扩展”。
肯(Ken)

1
我和肯在一起。我个人无法计算必须使用“撤消”的次数,因为我的手忘记了我在SE网站上:S
ephsmith 2012年

我本来建议您可以禁用javascript ...它解决了您的问题,但是它创建了一个新的
脚本

1
这里是有关网站的问题吗?还是关于到处禁用JavaScript?我可以将其作为错误报告移至我们的元数据中,但是已经有很多关于此站点的请求。meta.stackexchange.com/questions/3245/...
bmike

Answers:


7

这是Rob W的meta脚本,已更新为仅阻止cntrl- *并已修复,因此它可以与NinjaKit一起使用,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来更改行为的功能。如果您愿意运行代理服务器,则可以选择。

我确实看了一下(尽管不是很详尽),也没有看到像privoxy一样重写内容(xml,html,CSS或javascript)的浏览器插件。在Privoxy的网页中,查找js-annoyances过滤器。在这里,您会找到重写JavaScript的示例。

也许以浏览器插件的形式存在一种更现代的实现,该实现提供了类似的功能,但是使用privoxy可以很好地解决此用例。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.