在无脚本的网站状态:
例如,将noscript.allowedMimeRegExp
首选项值设置为
FRAME@https?://somesite\.com
FONT@https?://some-other-site\.com
WebGL@https://www\.khronos\.org
将永久允许从somesite.com加载任何FRAME / IFRAME,从some-other-site.com加载Web字体,从加载WebGL 3D内容https://www.khronos.org
。
我认为ABE无法做到。一种仅针对特定站点/域启用字体的怪异方法是使用Vimperator / Pentadactyl,并在LocationChange事件上自动更改MimeRegExp设置。要在离开页面时还原设置,可以在.vimperatorrc中使用此简单函数(从Anekos处获取),该函数使用带有负前瞻性的表达式:
js <<EOM
function add_AutoCommand(URI, onEnter, onLeave) {
let entered = false;
autocommands.add('LocationChange', '(?!' + URI + ')', function () {
if (entered) {
entered = false;
onLeave();
}
});
autocommands.add('LocationChange', URI, function () {
onEnter();
entered = true;
});
}
add_AutoCommand(https?://allow-font-on-this-site\.com,
:set! noscript.allowedMimeRegExp="FONT@https?://some-other-site\.com",
:set! noscript.allowedMimeRegExp=" "
);
EOM
我还没有测试过,但我会的。
编辑:应该是
add_AutoCommand('https?:\/\/allow-font-on-this-site\\.com.*',
function(){options.setPref("noscript.allowedMimeRegExp",
"FONT@http://fonts.gstatic.com")},
function(){options.setPref("noscript.allowedMimeRegExp",
"")}
);
...但是除非重新加载页面,否则noscript不会选择首选项,因此可以手动重新加载或使用 tabs.reload(config.browser.mCurrentTab, false);
似乎应该设置一个布尔值和一个超时,以防止LocationChange再次执行(因此,循环执行)重载。可能将PageLoadPre事件上的另一个autocmd用于该布尔值。我知道这变得越来越难看。抱歉。
ps。一个简单的基于URL的首选项切换的更有用的应用程序显然是更改了下载目录。
编辑(2017):使用uBlock Origin,您可以专门针对某些类型的html对象,文件或行为。
动态和静态规则均指定域/ URL允许使用来源。我已经使用了几年了。类型包括字体以及内联脚本,样式表,图像,对象,脚本,xmlhttprequest,sub_frame,media,websocket,popunder和popup。
示例规则:
* * 3p block
no-remote-fonts: * true
no-remote-fonts: allow-font-on-this-site.com false
allow-font-on-this-site.com font-cdn.org noop
也就是说:
- 阻止第三方请求从任何页面到任何地方
- 从任何地方阻止任何页面上的第三方字体
- 在任何地方重新启用域上页面上的第三方字体allow-font-on-this-site.com
- (可选)重新启用对页面上源于font-cdn.org域的源的请求
使用noop(“无操作”)时,我们仍将应用静态规则过滤(通常在称为广告屏蔽或恶意列表的分布式规则中定义)。