📄 mgjs_uievent.cpp
字号:
//NB: events comes out since DOM Level 2 speciafication.#include "mgjs_main.h"static JSBool GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool SetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool UIEventInitUIEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);static JSBool NSUIEventGetPreventDefault(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);//// UIEvent property ids//enum UIEvent_slots { UIEVENT_VIEW , UIEVENT_DETAIL , NSUIEVENT_LAYERX , NSUIEVENT_LAYERY , NSUIEVENT_PAGEX , NSUIEVENT_PAGEY , NSUIEVENT_WHICH , NSUIEVENT_RANGEPARENT , NSUIEVENT_RANGEOFFSET , NSUIEVENT_CANCELBUBBLE , NSUIEVENT_ISCHAR };static JSBool GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){ MGHTMLView *view = mgJSGetView(cx); if (JSVAL_IS_INT(id)) { switch (JSVAL_TO_INT(id)) { case UIEVENT_VIEW : //TODO: break; case UIEVENT_DETAIL : //TODO: break; case NSUIEVENT_LAYERX : //TODO: *vp = INT_TO_JSVAL(0); break; case NSUIEVENT_LAYERY : //TODO: *vp = INT_TO_JSVAL(0); break; case NSUIEVENT_PAGEX : *vp = INT_TO_JSVAL(view->m_JsEventPageX); break; case NSUIEVENT_PAGEY : *vp = INT_TO_JSVAL(view->m_JsEventPageY); break; case NSUIEVENT_WHICH : *vp = INT_TO_JSVAL(view->m_JsKeyEventValue); break; case NSUIEVENT_RANGEPARENT : //TODO: break; case NSUIEVENT_RANGEOFFSET : //TODO: break; case NSUIEVENT_CANCELBUBBLE : //TODO: break; case NSUIEVENT_ISCHAR : //TODO: break; } } return JS_TRUE;}static JSBool SetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){ if (JSVAL_IS_INT(id)) { switch (JSVAL_TO_INT(id)) {#if 0 //NB: readonly property case UIEVENT_VIEW : break; case UIEVENT_DETAIL : break; case NSUIEVENT_LAYERX : break; case NSUIEVENT_LAYERY : break; case NSUIEVENT_PAGEX : break; case NSUIEVENT_PAGEY : break; case NSUIEVENT_WHICH : break; case NSUIEVENT_RANGEPARENT : break; case NSUIEVENT_RANGEOFFSET : break; case NSUIEVENT_ISCHAR : break;#endif case NSUIEVENT_CANCELBUBBLE : //TODO: break; } } return JS_TRUE;}//// Native method initUIEvent//static JSBool UIEventInitUIEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){ return JS_TRUE;}static JSBool NSUIEventGetPreventDefault(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){ return JS_TRUE;}//// UIEvent class properties//static JSPropertySpec UIEventProperties[] ={ {"view", UIEVENT_VIEW, JSPROP_ENUMERATE | JSPROP_READONLY}, {"detail", UIEVENT_DETAIL, JSPROP_ENUMERATE | JSPROP_READONLY}, {"layerX", NSUIEVENT_LAYERX, JSPROP_ENUMERATE | JSPROP_READONLY}, {"layerY", NSUIEVENT_LAYERY, JSPROP_ENUMERATE | JSPROP_READONLY}, {"pageX", NSUIEVENT_PAGEX, JSPROP_ENUMERATE | JSPROP_READONLY}, {"pageY", NSUIEVENT_PAGEY, JSPROP_ENUMERATE | JSPROP_READONLY}, {"which", NSUIEVENT_WHICH, JSPROP_ENUMERATE | JSPROP_READONLY}, {"rangeParent", NSUIEVENT_RANGEPARENT, JSPROP_ENUMERATE | JSPROP_READONLY}, {"rangeOffset", NSUIEVENT_RANGEOFFSET, JSPROP_ENUMERATE | JSPROP_READONLY}, {"cancelBubble", NSUIEVENT_CANCELBUBBLE, JSPROP_ENUMERATE}, {"isChar", NSUIEVENT_ISCHAR, JSPROP_ENUMERATE | JSPROP_READONLY}, {0}};//// class for UIEvent//JSClass UIEventClass = { "UIEvent", JSCLASS_HAS_PRIVATE , JS_PropertyStub, JS_PropertyStub, GetUIEventProperty, SetUIEventProperty, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub };//// UIEvent class methods//static JSFunctionSpec UIEventMethods[] = { {"initUIEvent", UIEventInitUIEvent, 5}, {"getPreventDefault", NSUIEventGetPreventDefault, 0}, {0}};JSObject* InitUIEventClass(JSContext *cx,JSObject *globalObj,JSObject *proto){ JSObject *obj; obj = JS_DefineObject (cx,globalObj, "UIEvent", &UIEventClass,proto,JSPROP_ENUMERATE); JS_DefineProperties (cx,obj,UIEventProperties); JS_DefineFunctions (cx,obj,UIEventMethods); return obj;}JSObject* NewScriptUIEvent(JSContext *cx,JSObject *proto,JSObject *parent,ElementImpl *eImpl){ JSObject *obj; JSObject *global = JS_GetGlobalObject(cx); jsval vp; if ((JS_TRUE == JS_LookupProperty(cx, global, "UIEvent", &vp) && JSVAL_IS_OBJECT(vp))) obj=JS_NewObject(cx,&UIEventClass,JSVAL_TO_OBJECT(vp),NULL); else obj=InitUIEventClass(cx,JS_GetParent(cx,proto),proto); return obj;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -