From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/npclass/index.html | 97 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 files/zh-cn/npclass/index.html (limited to 'files/zh-cn/npclass/index.html') diff --git a/files/zh-cn/npclass/index.html b/files/zh-cn/npclass/index.html new file mode 100644 index 0000000000..b207ae7b46 --- /dev/null +++ b/files/zh-cn/npclass/index.html @@ -0,0 +1,97 @@ +--- +title: NPClass +slug: NPClass +translation_of: Archive/Plugins/Reference/NPClass +--- +

« Gecko Plugin API Reference « Scripting plugins

+ +

Summary

+ +

NPClass 是一个包含着一组函数指针的结构体。这些函数指针所指向的函数是组成NPClass某个实例(例如一个NPObject)的所有行为 。

+ +

Syntax

+ +
struct NPClass
+{
+  uint32_t structVersion;
+  NPAllocateFunctionPtr allocate;
+  NPDeallocateFunctionPtr deallocate;
+  NPInvalidateFunctionPtr invalidate;
+  NPHasMethodFunctionPtr hasMethod;
+  NPInvokeFunctionPtr invoke;
+  NPInvokeDefaultFunctionPtr invokeDefault;
+  NPHasPropertyFunctionPtr hasProperty;
+  NPGetPropertyFunctionPtr getProperty;
+  NPSetPropertyFunctionPtr setProperty;
+  NPRemovePropertyFunctionPtr removeProperty;
+  NPEnumerationFunctionPtr enumerate;
+  NPConstructFunctionPtr construct;
+};
+
+ +
警告:不要直接调用这些函数,你应该使用这些 API functions.
+ +

Fields

+ +
+
structVersion
+
结构体的版本号。它的值是NP_STRUCT_VERSION。在Mozilla 1.8.*中,NP_STRUCT_VERSION的值是1, 从Mozilla 1.9a1开始变成2, 从Firefox 3.0b1开始是3。
+
allocate
+
返回一个新分配的 NPObject对象的指针。 如果该指针不为空,则将会被NPN_CreateObject()函数调用, 否则浏览器会调用 malloc()。 这个函数应该分配并且返回能保存创建出来的NPObject对象的存储区域。
+
deallocate
+
当一个对象的引用计数为零的时候被NPN_ReleaseObject()调用。如果这个指针为空,那浏览器就直接调free()函数。
+
invalidate
+
当属于一个插件实例的活跃对象(live objects)被销毁时被调用。这个函数通常在 deallocate 函数或者free()之前被调用。 任何对失效对象(invalidated object)的操作都会导致未定义的行为。
+
hasMethod
+
NPN_HasMethod()调用,用来判断在给定的NPObject中是否存在某个特定的方法。返回true 如果该方法存在,否则返回false.
+
invoke
+
NPN_Invoke()调用,来调用给定NPObject对象中的指定方法。如果调用成功,返回true,如果任何错误产生则返回false。
+
invokeDefault
+
NPN_InvokeDefault()调用,来调用给定NPObject对象中的默认方法(该对象有默认方法的话)。如果调用成功,返回true,如果任何错误产生则返回false。
+
hasProperty
+
NPN_HasProperty()调用,来检查给定NPObject对象中是否存在某个属性。返回true如果存在该属性,否则返回false。
+
getProperty
+
NPN_GetProperty()调用,来获取给定NPObject对象中的某个属性。返回true如果属性获取成功,否则返回false。
+
setProperty
+
NPN_SetProperty()调用,来设置给定NPObject对象中的某个属性。返回true如果属性设置成功,否则返回false。
+
removeProperty
+
NPN_RemoveProperty()调用,来删除给定NPObject对象中的某个属性。返回true如果属性删除成功,否则返回false。
+
enumerate
+
NPN_Enumerate调用。只有当structVersion的值大于等于NP_CLASS_STRUCT_VERSION_ENUM (2)时,该指针才有效。
+
construct
+
NPN_Construct调用。只有当structVersion的值大于等于NP_CLASS_STRUCT_VERSION_CTOR (3),该指针才有效。
+
+ +

Function pointer syntax

+ +
typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp, NPClass *aClass);
+typedef void (*NPDeallocateFunctionPtr)(NPObject *npobj);
+typedef void (*NPInvalidateFunctionPtr)(NPObject *npobj);
+typedef bool (*NPHasMethodFunctionPtr)(NPObject *npobj, NPIdentifier name);
+typedef bool (*NPInvokeFunctionPtr)(NPObject *npobj, NPIdentifier name,
+                                    const NPVariant *args, uint32_t argCount,
+                                    NPVariant *result);
+typedef bool (*NPInvokeDefaultFunctionPtr)(NPObject *npobj,
+                                           const NPVariant *args,
+                                           uint32_t argCount,
+                                           NPVariant *result);
+typedef bool (*NPHasPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name);
+typedef bool (*NPGetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name,
+                                         NPVariant *result);
+typedef bool (*NPSetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name,
+                                         const NPVariant *value);
+typedef bool (*NPRemovePropertyFunctionPtr)(NPObject *npobj,
+                                            NPIdentifier name);
+typedef bool (*NPEnumerationFunctionPtr)(NPObject *npobj, NPIdentifier **value,
+                                         uint32_t *count);
+typedef bool (*NPConstructFunctionPtr)(NPObject *npobj,
+                                       const NPVariant *args,
+                                       uint32_t argCount,
+                                       NPVariant *result);
+
+ +

See also

+ + -- cgit v1.2.3-54-g00ecf