我想允许使用 NoScript FireFox 插件的某些站点使用“被阻止的对象”,包括字体。
我理解为什么 NoScript 会阻止 fonts,但对于一些受信任的网站,我仍然希望允许它们。
我阅读了如何仅允许来自一个域的脚本以及如何启用除ABE 手册之外的某些特定脚本。但我无法让它发挥作用。这里有一些我为 Toggl 尝试过的 ABE 规则:
Site .gstatic.com .bootstrapcdn.com
Accept from .toggl.com
Site fonts.gstatic.com maxcdn.bootstrapcdn.com
Accept INCLUSION(SCRIPT, OBJ, CSS) from .toggl.com
Site fonts.gstatic.com maxcdn.bootstrapcdn.com
Accept from .toggl.com
Run Code Online (Sandbox Code Playgroud)
然而,这些规则集都不允许 Toggl 包含字体。你明白我哪里错了吗?
(FireFox 34.0.5 上的 NoScript 2.6.9.6rc3)
在无脚本的网站状态:
例如,将
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 的网络字体和来自
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
Run Code Online (Sandbox Code Playgroud)
我还没有测试过这个,但我会。
编辑:应该是
add_AutoCommand('https?:\/\/allow-font-on-this-site\\.com.*',
function(){options.setPref("noscript.allowedMimeRegExp",
"FONT@http://fonts.gstatic.com")},
function(){options.setPref("noscript.allowedMimeRegExp",
"")}
);
Run Code Online (Sandbox Code Playgroud)
...但是除非重新加载页面,否则 noscript 不会选择首选项,因此要么手动重新加载,要么使用 tabs.reload(config.browser.mCurrentTab, false);
似乎您应该设置一个布尔值和一个超时以防止 LocationChange 再次执行(因此,循环)重新加载。也许 PageLoadPre 事件上的另一个 autocmd 可能用于布尔值。我知道这变得很丑陋。对不起。
附:简单的基于 URL 的首选项切换的更有用的应用程序显然是更改下载目录。
编辑(2017 年):使用uBlock Origin,您可以专门针对某些类型的 html 对象、文件或行为。
动态和静态规则都指定允许域/url 的来源。我已经使用这个几年了。类型包括font以及inline-script、stylesheet、image、object、script、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
Run Code Online (Sandbox Code Playgroud)
也就是说:
使用noop(“无操作”),我们仍然应用静态规则过滤(通常在称为广告阻止或恶意广告列表的分布式规则中定义)。
归档时间: |
|
查看次数: |
2860 次 |
最近记录: |