李恒道 发表于 2021-1-10 01:29:46

XPCNativeWrapper的限制

原文链接https://developer.mozilla.org/zh-TW/docs/XPCNativeWrapper

转载自mozila

这里有一些不能被用在XPCNativeWrapper的一般使用的属性跟程序风格。

1.对一个DOM node或是window物件的XPCNativeWrapper给予或是读取一个on*属性将会丢出Exception。(使用addEventListener取代,并且用event.preventDefault();在你的处理器内假如你之前用了return false;)

2.不能够在XPCNativeWrapper内用window名称存取iframe(e.g.window.framename)。

3.document.all在XPCNativeWrapper内不能用。

4.在XPCNativeWrapper内不行对HTML文件用name存取命名的东西。举例,假如你有并且docWrapper是一个对HTML文件doc的伪装器,那当docWrapper为定义时,doc.foo是一个HTMLFormElement。希望这样做的程序能够使用docWrapper.forms.namedItem('foo')取代。

5.对HTML文件,在XPCNativeWrapper内用id存取node是不行的。因该用getElementById()取代。

6.对HTML form,在XPCNativeWrapper内用name存取input是不行的。想这样做的程序必须使用form.elements.namedItem('foo')取代。

7.对HTMLCollection,在XPCNativeWrapper内用name存取元素是步行的。想这样做的代码必须使用namedItem()方法。注意这个namedItem只回传第一个有name的input元素,即使有很多个有相同名称的元素(e.g. Radio buttons)。

8.同样的,对plugin、pluginArray、或是MimeTypeArray,在XPCNativeWrapper内用name存取items是不行的。你必须使用namedItem()取代。

9.不能经由XPCNativeWrapper呼叫由NPAPI plugin实作的方法。

10.不能够经由XPCNativeWrapper取得(getting)或是设定(setting)由NPAPI plugin实作的属性。

11.不能够经由XPCNativeWrapper呼叫经由XBL binding附加到node上的方法。

12.不能够经由XPCNativeWrapper取得(getting)或是设定(setting)经由XBL binding附加到node上的属性。

13.经由'for(var p in wrapper)'列举XPCNativeWrapper的属性不会列举IDL定义的属性。

14.Object.prototype不在XPCNativeWrapper的原型炼里面。As aresult,变异的Object.prototype被定义在XPCNativeWrapper(更准确一点,这里有__proto__,__parent__,__count__,toSource,toLocalString,valueOf,watch,unwatch,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,__defineGetter__,__defineSetter__,__lookupGetter__,and__lookupSetter__)。

15.没有实作旧的XPCNativeWrapper有的importXPCNative,

16.不能经由XPCNativeWrapper存取标准类别(例如Function)。要对特定的window的parent建立function和物件,使用window的eval()function。

17.对'expando'的属性使用删除操作元在XPCNativeWrapper会丢出安全性Exceprion。

懒男孩 发表于 2021-1-10 12:21:18

哥哥牛逼,虽然我看不懂
页: [1]
查看完整版本: XPCNativeWrapper的限制