标签 Firefox 下的文章

使用 XBL 为 Firefox 简单实现 FlashBlock

2012.09.04 更新

Firefox 终于追随 Opera 和 Chrome 之后实现了 Click to Play 的功能,
启用方法是在 about:config 中将 plugins.click_to_play 设置为 true

前几天我在评论里回答 echo·falsita 朋友时说:

“原生的 Click to Play 还无法很好的管理白名单”

在这里我表示抱歉(见下图)。

The 'Click to Play' Feature in Firefox

看来本工具“阳寿已尽”,多少有点儿伤感……

- 阅读剩余部分 -

[UserChrome.JS] 按黑名单定时清理 Firefox 的历史浏览记录

功能介绍

前儿边看球赛边写了个脚本,作用是定时去删除某些特定网站的历史记录;
但它不会去碰 Cookie 等信息,这也是和 Firefox 内置的 Private Browsing 功能的主要区别。
因为配合 ucjsPermission2.uc.xul 这类等脚本你可以对 Cookie 作更精确的控制。

使用之后会检查每次访问的域名,如果在黑名单之中便将其加入预删除列表,
每隔一刻钟便去清理相关的历史记录条目,
当然在你最后关闭 Firefox 时也会去清理一次。

配置项

const BLACKLIST = [
    'baidu.com',
    'google.com',
];

这里定义黑名单域名,它允许精确到某些子域名。
没有设计成正则匹配是因为觉得没必要,若有需求可以提。

const PURGE_TIME = 900000;

这里则定义每隔多少时间清理一次黑名单域名的历史记录,
单位是毫秒,预设是** 15 分钟**( 900000 毫秒)。

特别注意

假如你的黑名单太过庞大,倒不如直接关掉历史记录功能算逑——
请打开 about:configplaces.history.enabled 设置为 false 即可。

除了 Cookie 之外,Recently Closed Tabs 也不会清理,
后续可以考虑在最后关闭 Firefox 时将其清理掉。

下载地址

PrivacyPlus - An UserScript.js for Firefox

[UserScript] 将 Web 离线迅雷注册为磁力、电驴等特殊链的处理程序

介绍

Web 离线迅雷打开 ed2k 链接

不知标题是否写得太绕口,
简单地说就是将离线迅雷注册为某些特殊(伪)协议的默认处理程序,
包括迅雷快车旋风磁力电驴

08 年写过一个Firefox 扩展来做“解码”这件事,
现在有了 Web 离线迅雷 Web 离线旋风等吸血利器
我在 OSX 上连 P2P 软件都懒得装了。 😱

于是去年干脆写了段脚本做了标题所述之事,
当时还顺手写了个油猴脚本
但一直存在间歇性登录态丢失问题,
于是就搁置了一年未发;
最近研究迅雷联盟时偶有所得,
貌似可以解决上述问题,
于是趁今天有空更新了一下发布出来。

原理简单就不多着墨了,
请自行去阅读 navigator.registerProtocolHandler 的文档

至于兼容性,
脚本虽是为 Firefox 的 GreaseMonkey 所写,
但所有遵循 UserScript 规范的脚本管理器都可以使用;
Chrome 当然能用,
但貌似它对自定义协议有前缀限制;
而 Opera 则未经测试。

2012.03.24 更新:
虽然 UserScript 本身(作为一种事实规范)在各种浏览器上都有其实现,
但完全开放 navigator.registerProtocolHandler 接口的浏览器并不多。
目前本脚本只在 Firefox 上测试通过。

使用方法

  1. 安装并启用该脚本;
  2. 访问 离线迅雷, 请确认当前你处于未登录状态;
  3. 浏览器将会提示你是否授权将离线迅雷注册为上述(伪)协议的默认处理程序(如下图);
  4. 禁用(或干脆删除)本脚本,开始使用吧。

Firefox 询问你是否将 Web 离线迅雷注册为磁力链默认处理程序

历史

  • 2011.02.24 1.0: 初始发布
  • 2012.03.06 1.1: 解决登录问题,增加使用说明

下载

webThunderHelper.user.js

浏览器的特征探测

【2010.12.08 更新】
抱歉,
用原生 IE9 测试后发现 IE9 的判断代码已失效,
研究将继续……

【2010.11.29 更新】
之前的 IE8 检测方式容易被“伪造”,
改为检查 Image 对象是否存在 prototype 的方式。(via)
另外有朋友说 IE8 的探测在 IE7 模式下也通过,
我想说这是我有意为之:
目的就是要探测浏览器本身的真实版本,
具体运行于哪种模式可以通过 doc.documentMode 来获得。

【2010.11.17 更新】
IE9 不知从哪个 Pre 版开始,
又恢复了之前更新时所提到的
非空数组字面量的最后一个元素缺失的问题,
也就是说这个 Bug 又得以“重现”了。
我个人推断是太多线上应用依靠这个 Bug 来识别 IE ,
因此开发团队不得已而为之。
但不管怎样,
本文还得继续。
目前利用了 IE9- 里 toFixed 方法在特定情况不会四舍五入的 Bug 来判定,
具体代码请见正文。


【2010.08.13 更新】
增强了 IE6 的区分能力。
当然更可以使用 IE 自己的条件编译,
只是有的压缩器支持度有限,
不便于日常开发。

【2010.04.18 更新】
更加严格地区分出了 IE 9,
增强了 Opera 的区分能力,
并将 Chrome 的判别特征换成了引擎特性 [via],
这样你就能看出国内哪些浏览器是从 Chrome 的内核改过来的了,
大家可以动手试试。 :)

【2010.04.17 更新】
IE 9 在我看来改进非常大:
有我所关心的对 Mutation Events 的支持,
还有事件模型的 W3C 化等等……
本文中我就不多冗述,
有机会再另文探讨。
由于在项目中大量使用特征判断,
IE 9 在这方面最显著的变化是:
之前那则“最短的 IE 判断法”已经失效,
一起被修复的还有一直伴随 IE 的数组 Bug:
非空数组字面量的最后一个元素缺失的问题(即:[null,]),
因此现如今的最短记录保持者(6字节的 !-[1,])也已然失效。(而且不支持 CC 压缩)
你也不要尝试使用 addEventListener 方法来判别,
因为 IE 9 已经支持了。(事件的改进非常大,这很好)
所以说 IE 已经越来越靠近标准,
如果在项目中有对 IE 进行特殊处理的代码,
你可能需要在 IE9下重新检查一下了。

由于我个人依旧是 XP 的忠实拥趸,
而 XP 又很悲剧地无法安装 IE 9,
所以一些测试是在 Haitao Jia 同学的协助下完成,
在此表示感谢。
也正因为如此,
我没有进行覆盖面太广的测试。
不过目前所发现的唯一“幸存”下来的 IE 系列 Bug 依旧与刚提到的数组 Bug 有关,
微软修复了字面量里的 Bug 却忘了当字符串被 split 成数组后却涛声依旧啊。
虽然判断起来稍微麻烦了点,
但不管怎样这是我目前发现的仅剩不多地可以用来判断 IE 全系列的代码:

- 阅读剩余部分 -

修复 Firebug 对无子节点的非自闭合标签的“识别问题”

【2010.01.21 更新】
前天发布的 Firebug 1.5 已经修复了这个 Bug。
本文将停止更新。
(实际上自发布后也没更新过 =_,=)

【2009.07.06 发布】
题目很拗口,
事实上想用一句话清楚地描述这个问题并不容易,
那么还是看图说话吧:

请打开淘宝网首页,
Firebug 查看“公告栏”区域的圆角区域(如下图),

淘宝网“公告栏”圆角

圆角的右上部分是用一个无子节点的 SPAN 标签实现的(如下图):

a blank non-self-closing tag issue of firebug - source viewing

那么问题出现了:
由于它是无子节点的,
因此它被 Firebug “误认为”是一个自闭合标签。

a blank non-self-closing tag issue of firebug - source editing

在实时编辑代码时问题亦然(如上图)。
而事实上 Firebug 遵循的 XML 标准,
这样处理是完全没有问题的。

无子节点的 SPAN 标签是否存在“语义问题”将不是本次讨论的重点,
毕竟我们还处于比较落后的兼容时代,
平时难免会遇到类似的麻烦。
特别是前端工程师将 Demo 页面完成交付开发工程师来拼装模板时,
如果开发工程师使用 Firebug 来复制代码,
那么在 IE 下将由于“SPAN 标签未被闭合”而发生错位(如下图):

- 阅读剩余部分 -