Firefox 35 下可用的 pentadactyl

2014-12-09 • Web 万象 • #firefox #pentadactyl

pentadactyl 是一个以类 vim 方式操作 Firefox 的插件。

由于某些原因,pentadactyl 并未停止开发,但火狐附加组件页面和官方每日构建页面都停止了更新,导致火狐新版无法支持 。

于是我自己构建了一个版本,是文章发布时的最新源码构建的。放在了百度网盘,需要的人自取。

构建其实也很简单,以 CentOS 为例,假设你安装了 epel ,然后:

yum install mercurial zip make # 安装hg,zip,gmake等依赖
hg clone http://dactyl.googlecode.com/hg/ dactyl # 将 dactyl 的源码克隆到本地
cd dactyl/
make -C pentadactyl xpi # 制作 pentadactyl 的 xpi 文件

然后你会在 downloads 文件夹下发现构建好的 xpi 文件。直接用火狐安装即可。

更新:Firefox 35 可用的版本已经传到了百度网盘

innerTEXT,outerHTML,outerTEXT和firefox

2012-07-22 • Web 万象 • #firefox #html #js

Firefox 不支持 DOM 对象的 outerHTML innerText outerText 属性……这是个一直困扰大家(包括我)很久的问题,网上也有不少的解决方法,这里摘录如下,收藏备用。(源链接:http://www.w3help.org/zh-cn/causes/SD9017)

解决方案

在 Firefox 中,可通过扩展 HTMLElement 的原型 (prototype) 来实现相关属性。

  1. 扩展 Firefox 中 DOM 元素的 outerHTML 属性:
    if (typeof(HTMLElement) != "undefined") {
       HTMLElement.prototype.__defineSetter__("outerHTML", function(s) {
            var r = this.ownerDocument.createRange();
            r.setStartBefore(this);
            var df = r.createContextualFragment(s);
            this.parentNode.replaceChild(df, this);
            return s;
        });
       HTMLElement.prototype.__defineGetter__("outerHTML", function(){
            var a = this.attributes, str = "<" + this.tagName, i = 0;
            for (; i < a.length; i++)
                if (a[i].specified)
                    str += " " + a[i].name + '="' + a[i].value + '"';
            if (!this.canHaveChildren)
                return str + " />";
            return str + ">" + this.innerHTML + "</" + this.tagName + ">";
        });
    
        HTMLElement.prototype.__defineGetter__("canHaveChildren", function(){
            return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase());
        });
    }
  2. 扩展 Firefox 中 DOM 元素的 innerText 属性:
    if (!!document.getBoxObjectFor || window.mozInnerScreenX != null) {
        HTMLElement.prototype.__defineSetter__("innerText", function(sText) {
            var parsedText = document.createTextNode(sText);
            this.innerHTML = "";
            this.appendChild(parsedText);
            return parsedText;
        });
        HTMLElement.prototype.__defineGetter__("innerText", function() {
            var r = this.ownerDocument.createRange();
            r.selectNodeContents(this);
            return r.toString();
        });
    }
  3. 扩展 Firefox 中 DOM 元素的 outerText 属性:
    if (!!document.getBoxObjectFor || window.mozInnerScreenX != null) {
        HTMLElement.prototype.__defineSetter__("outerText", function(sText) {
            var parsedText = document.createTextNode(sText);
            this.parentNode.replaceChild(parsedText, this);
            return parsedText;
        });
        HTMLElement.prototype.__defineGetter__("outerText", function() {
            var r = this.ownerDocument.createRange();
            r.selectNodeContents(this);
            return r.toString();
        });
    }

友情链接