首页 >> 民生新闻

浏览器的原型扩展计划

民生新闻  2021-08-24 14:26 字号: 大 中 小

我不想挑起IE与Firefox之间的争论,我只想说说Firefox浏览器有而IE里没有的一个功能,对DOM里的对象原型的扩展。 在DOM里的window、document、element、event等这些对象在Firefox(或者说Mozilla核心的浏览器)里都有与之对应的原型:Window、HTMLDocument、HTMLElement、Event等,对于这些原型扩展之后,那些window、document等对象就“自动”拥有某些成员属性或者成员方法了。举个简单的例子,比如在IE里都有一个 outerHTML 属性,可以取得这些元素所有的细节信息,但是这个属性不是W3C标准属性,所以那些非IE的浏览器就不会拥有这种属性了。不过因为这个属性使用起来非常方便,我想在Firefox之类的浏览器里也使用这个属性那该怎么办呢?这里就要用到原型扩展了:

script type=\"text/javascript\"/*![CDATA[*/

if(typeof(HTMLElement)!=\"undefined\" !era)

{

ototype.__defineGetter__(\"outerHTML\",function()

{

var a=tributes, str=\"\"+gName, i=0;for(;ngth;i++)

if(a[i].specified) str+=\" \"+a[i].name+\'=\"\'+a[i].value+\'\"\';

if(!nHaveChildren) return str+\" /\";

return str+\"\"+nerHTML+\"/\"+gName+\"\";

});

ototype.__defineSetter__(\"outerHTML\",function(s)

{

var r = eateRange();

tStartBefore(this);

var df = eateContextualFragment(s);

placeChild(df, this);

return s;

});

ototype.__defineGetter__(\"canHaveChildren\",function()

{

return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(LowerCase());

});

}

/*]]*//script

加了这么一段代码之后,在Firefox浏览器里再调用 tElementById(\"divId\").outerHTML,(读取/赋值)一切正常,这一点优势是IE系列浏览器所不具有的。这一点算是 Firefox 浏览器(Mozilla核心的浏览器)的一个亮点吧!

下面再写两个比较有用的扩展吧:

script type=\"text/javascript\"/*![CDATA[*/

if(!tachEvent dEventListener)

{

tachEvent = tachEvent=

tachEvent=function(en, func, cancelBubble)

{

var cb = cancelBubble ? true : false;

全球的年棉花产量将较需求短缺 13%。棉花期货自2月5日以来上升 23%至近期高点 dEventListener(LowerCase().substr(2), func, cb);

};

tachEvent = tachEvent=

tachEvent=function(en, func, cancelBubble)

{

var cb = cancelBubble ? true : false;

moveEventListener(LowerCase().substr(2), func, cb);

};

}

if(typeof Event!=\"undefined\" !era)

{

var t=ototype;

t.__defineSetter__(\"returnValue\", function(b){if(!b)eventDefault(); return b;});

t.__defineSetter__(\"cancelBubble\",function(b){if(b) opPropagation(); return b;});

t.__defineGetter__(\"offsetX\", function(){return yerX;});

t.__defineGetter__(\"offsetY\", function(){return yerY;});

t.__defineGetter__(\"srcElement\", function(){var n=rget; while (deType!=1)n=rentNode;return n;});

}

/*]]*//script

查看本文来源

石嘴山白癜风医院
成都不孕不育医院
武汉白癜风医院排名
推荐资讯