⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mgjs_main.cpp

📁 monqueror一个很具有参考价值的源玛
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	return JS_TRUE;}static JSBool WindowInternalCaptureEvents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	MGHTMLView *view = mgJSGetView(cx);	int32 b0;	if(argc<1)return JS_FALSE;	if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) 		return JS_FALSE;	view->m_JsEventTypeToCapture |= b0;	return JS_TRUE;}static JSBool WindowInternalReleaseEvents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	MGHTMLView *view = mgJSGetView(cx);	int32 b0;	if(argc<1)return JS_FALSE;	if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) 		return JS_FALSE;	view->m_JsEventTypeToCapture &= ~b0;		return JS_TRUE;}static JSBool WindowInternalRouteEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalBack(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalForward(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalHome(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalStop(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalPrint(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	//TODO:	return JS_TRUE;}static JSBool WindowInternalMoveTo(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalMoveBy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalResizeTo(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalResizeBy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalSizeToContent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalGetAttention(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalScroll(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalClearInterval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalSetInterval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalEnableExternalCapture(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalDisableExternalCapture(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalSetCursor(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalOpenDialog(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalUpdateCommands(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalEscape(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool WindowInternalUnescape(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool EventTargetAddEventListener(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	//TODO:	return JS_TRUE;}static JSBool EventTargetRemoveEventListener(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	//TODO:	return JS_TRUE;}static JSBool EventTargetDispatchEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	//TODO:	return JS_TRUE;}static JSBool ViewCSSGetComputedStyle(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	//TODO:	return JS_TRUE;}static JSPropertySpec WindowProperties[] ={  {"navigator",    WINDOWINTERNAL_NAVIGATOR,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"location", WINDOWINTERNAL_LOCATION,JSPROP_ENUMERATE},  {"document",  WINDOW_DOCUMENT,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"history",    WINDOWINTERNAL_HISTORY,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"innerWidth",    WINDOWINTERNAL_INNERWIDTH,    JSPROP_ENUMERATE},  {"innerHeight",    WINDOWINTERNAL_INNERHEIGHT,    JSPROP_ENUMERATE},  {"name",    WINDOW_NAME,    JSPROP_ENUMERATE},#if 0  {"parent",    WINDOW_PARENT,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"scrollbars",    WINDOW_SCROLLBARS,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"frames",    WINDOW_FRAMES,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"scrollX",    WINDOW_SCROLLX,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"scrollY",    WINDOW_SCROLLY,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"window",    WINDOWINTERNAL_WINDOW,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"self",    WINDOWINTERNAL_SELF,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"screen",    WINDOWINTERNAL_SCREEN,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"statusbar",    WINDOWINTERNAL_STATUSBAR,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"directories",    WINDOWINTERNAL_DIRECTORIES,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"closed",    WINDOWINTERNAL_CLOSED,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"crypto",    WINDOWINTERNAL_CRYPTO,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"pkcs11",    WINDOWINTERNAL_PKCS11,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"opener",    WINDOWINTERNAL_OPENER,    JSPROP_ENUMERATE},  {"status",    WINDOWINTERNAL_STATUS,    JSPROP_ENUMERATE},  {"defaultStatus",    WINDOWINTERNAL_DEFAULTSTATUS,    JSPROP_ENUMERATE},  {"title",    WINDOWINTERNAL_TITLE,    JSPROP_ENUMERATE},  {"outerWidth",    WINDOWINTERNAL_OUTERWIDTH,    JSPROP_ENUMERATE},  {"outerHeight",    WINDOWINTERNAL_OUTERHEIGHT,    JSPROP_ENUMERATE},  {"screenX",    WINDOWINTERNAL_SCREENX,    JSPROP_ENUMERATE},  {"screenY",    WINDOWINTERNAL_SCREENY,    JSPROP_ENUMERATE},  {"pageXOffset",    WINDOWINTERNAL_PAGEXOFFSET,    JSPROP_ENUMERATE},  {"pageYOffset",    WINDOWINTERNAL_PAGEYOFFSET,    JSPROP_ENUMERATE},  {"length",    WINDOWINTERNAL_LENGTH,    JSPROP_ENUMERATE | JSPROP_READONLY},  {"onmousedown",    WINDOWEVENTOWNER_ONMOUSEDOWN,    JSPROP_ENUMERATE},  {"onmouseup",    WINDOWEVENTOWNER_ONMOUSEUP,    JSPROP_ENUMERATE},  {"onclick",    WINDOWEVENTOWNER_ONCLICK,    JSPROP_ENUMERATE},  {"onmouseover",    WINDOWEVENTOWNER_ONMOUSEOVER,    JSPROP_ENUMERATE},  {"onmouseout",    WINDOWEVENTOWNER_ONMOUSEOUT,    JSPROP_ENUMERATE},  {"onkeydown",    WINDOWEVENTOWNER_ONKEYDOWN,    JSPROP_ENUMERATE},  {"onkeyup",    WINDOWEVENTOWNER_ONKEYUP,    JSPROP_ENUMERATE},  {"onkeypress",    WINDOWEVENTOWNER_ONKEYPRESS,    JSPROP_ENUMERATE},  {"onmousemove",    WINDOWEVENTOWNER_ONMOUSEMOVE,    JSPROP_ENUMERATE},  {"onfocus",    WINDOWEVENTOWNER_ONFOCUS,    JSPROP_ENUMERATE},  {"onblur",    WINDOWEVENTOWNER_ONBLUR,    JSPROP_ENUMERATE},  {"onsubmit",    WINDOWEVENTOWNER_ONSUBMIT,    JSPROP_ENUMERATE},  {"onreset",    WINDOWEVENTOWNER_ONRESET,    JSPROP_ENUMERATE},  {"onchange",    WINDOWEVENTOWNER_ONCHANGE,    JSPROP_ENUMERATE},  {"onselect",    WINDOWEVENTOWNER_ONSELECT,    JSPROP_ENUMERATE},  {"onload",    WINDOWEVENTOWNER_ONLOAD,    JSPROP_ENUMERATE},  {"onunload",    WINDOWEVENTOWNER_ONUNLOAD,    JSPROP_ENUMERATE},  {"onclose",    WINDOWEVENTOWNER_ONCLOSE,    JSPROP_ENUMERATE},  {"onabort",    WINDOWEVENTOWNER_ONABORT,    JSPROP_ENUMERATE},  {"onerror",    WINDOWEVENTOWNER_ONERROR,    JSPROP_ENUMERATE},  {"onpaint",    WINDOWEVENTOWNER_ONPAINT,    JSPROP_ENUMERATE},  {"ondragdrop",    WINDOWEVENTOWNER_ONDRAGDROP,    JSPROP_ENUMERATE},  {"onresize",    WINDOWEVENTOWNER_ONRESIZE,    JSPROP_ENUMERATE},  {"onscroll",    WINDOWEVENTOWNER_ONSCROLL,    JSPROP_ENUMERATE},#endif  {0}};static JSFunctionSpec WindowMethods[] = {#if 0  {"scrollTo",          WindowScrollTo,     2},  {"scrollBy",          WindowScrollBy,     2},  {"getSelection",          WindowGetSelection,     0},  {"scrollByLines",          WindowScrollByLines,     1},  {"scrollByPages",          WindowScrollByPages,     1},  {"dump",          WindowInternalDump,     1},  {"alert",          WindowInternalAlert,     1},  {"confirm",          WindowInternalConfirm,     1},  {"prompt",          WindowInternalPrompt,     2},  {"open",          WindowInternalOpen,     0},  {"close",          WindowInternalClose,     0},  {"setTimeout",          WindowInternalSetTimeout,     0},  {"clearTimeout",          WindowInternalClearTimeout,     1},  {"focus",          WindowInternalFocus,     0},  {"blur",          WindowInternalBlur,     0},  {"captureEvents",          WindowInternalCaptureEvents,     1},  {"releaseEvents",          WindowInternalReleaseEvents,     1},  {"routeEvent",          WindowInternalRouteEvent,     1},  {"back",          WindowInternalBack,     0},  {"forward",          WindowInternalForward,     0},  {"home",          WindowInternalHome,     0},  {"stop",          WindowInternalStop,     0},  {"print",          WindowInternalPrint,     0},  {"moveTo",          WindowInternalMoveTo,     2},  {"moveBy",          WindowInternalMoveBy,     2},  {"resizeTo",          WindowInternalResizeTo,     2},  {"resizeBy",          WindowInternalResizeBy,     2},  {"sizeToContent",          WindowInternalSizeToContent,     0},  {"GetAttention",          WindowInternalGetAttention,     0},  {"scroll",          WindowInternalScroll,     2},  {"clearInterval",          WindowInternalClearInterval,     1},  {"setInterval",          WindowInternalSetInterval,     0},  {"enableExternalCapture",          WindowInternalEnableExternalCapture,     0},  {"disableExternalCapture",          WindowInternalDisableExternalCapture,     0},  {"setCursor",          WindowInternalSetCursor,     1},  {"openDialog",          WindowInternalOpenDialog,     0},  {"updateCommands",          WindowInternalUpdateCommands,     1},  {"escape",          WindowInternalEscape,     1},  {"unescape",          WindowInternalUnescape,     1},  {"addEventListener",          EventTargetAddEventListener,     3},  {"removeEventListener",          EventTargetRemoveEventListener,     3},  {"dispatchEvent",          EventTargetDispatchEvent,     1},  {"getComputedStyle",          ViewCSSGetComputedStyle,     2},#endif    {0}};static JSClass WindowClass = {  "Window",   JSCLASS_HAS_PRIVATE,  JS_PropertyStub,JS_PropertyStub, GetWindowProperty, SetWindowProperty,  JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub };bool InitialJavaScript(MGHTMLView* view,JSRuntime** jrt,JSContext** jsc,JSObject** jso){	HWND phMainWnd=view->getHwnd();    JSRuntime *rt;    JSContext *cx;    JSObject *globalObj;	myJSPrivateData *mypd;    JSObject *documentObj,*locationObj,*historyObj,*navigatorObj;	JSObject *elementObj,*eventObj,*UIEventObj,*KeyEventObj;	rt = *jrt;	cx = *jsc;    if (!(globalObj = JS_NewObject (cx, &WindowClass, NULL, NULL)))	{        return FALSE;	}	JS_InitStandardClasses (cx, globalObj);	JS_DefineProperties (cx,globalObj, WindowProperties);    JS_DefineFunctions (cx,globalObj, WindowMethods);		navigatorObj = InitNavigatorClass(cx,globalObj,0);	documentObj = InitDocumentClass(cx,globalObj,0);	locationObj = InitLocationClass(cx,globalObj,0);	historyObj = InitHistoryClass(cx,globalObj,0);		eventObj = InitEventClass(cx, globalObj, 0);	UIEventObj = InitUIEventClass(cx, globalObj, eventObj);	KeyEventObj = InitKeyEventClass(cx, globalObj, UIEventObj);		elementObj=InitHTMLElementClass(cx,globalObj,0);		mypd = new myJSPrivateData;	mypd->view = view;	mypd->hWnd = phMainWnd;	mypd->dom = view->m_doc;	mypd->locationObj=locationObj;	mypd->navigatorObj=navigatorObj;	mypd->historyObj=historyObj;	mypd->documentObj=documentObj;	mypd->elementObj = elementObj;	mypd->eventObj = KeyEventObj;    JS_SetContextPrivate (cx,(void*)mypd);	*jso = globalObj;			return TRUE;}bool EvaluateJavaScript(QString &qs,JSContext** jsc,JSObject** jso,HTMLElementImpl *nimpl){    JSContext *cx;    JSObject *globalObj;    jsval rval;	JSString *jstr;	JSObject *documentObj;	cx = *jsc;	globalObj = *jso;	bool bret=1;		JSObject *elementObj;	JSBool jsb;	if(nimpl)	{		documentObj=mgJSGetDocumentObj(cx);		elementObj=mgJSGetElementObj(cx);		jsb = HTML_NewObjectByElementCommon(cx,documentObj,elementObj,documentObj,nimpl,&rval);		if(jsb==JS_TRUE)			globalObj=JSVAL_TO_OBJECT(rval);		else			globalObj=0;	}	if(JS_EvaluateScript (cx,globalObj,(const char*)qs,qs.length(),0,1,&rval)==JS_TRUE){		jstr = JS_ValueToString (cx, rval);		//NB: returned value determines form's submit				if( JSVAL_IS_BOOLEAN(rval)) 			bret = JSVAL_TO_BOOLEAN(rval);		else		if( JSVAL_IS_INT(rval)) 			bret = JSVAL_TO_INT(rval);#if DEBUG_JAVASCRIPT		fprintf(stderr,"mgjs_main script result: %s\n", JS_GetStringBytes (jstr));#endif			}	else{#if DEBUG_JAVASCRIPT		fprintf(stderr,"mgjs_main script result:JS_FALSE.\n");#endif			}		return bret;}bool FreeJavaScript(MGHTMLView* view,JSRuntime* jrt,JSContext* jsc){			mgJsFreeAllTimer(view);	mgJsFreeAllEvent(view);#if 0	if(jsc)		JS_DestroyContext (jsc);#endif			if(jrt)		JS_DestroyRuntime (jrt);		return TRUE;}		MGHTMLView* mgJSGetView(JSContext *cx){	return ((myJSPrivateData*)JS_GetContextPrivate (cx))->view;}HWND mgJSGethWnd(JSContext *cx){	MGHTMLView *view = ((myJSPrivateData*)JS_GetContextPrivate (cx))->view;	return view!=NULL ? view->getHwnd() : 0;}DOM::HTMLDocumentImpl* mgJSGetDoc(JSContext *cx){	MGHTMLView *view = ((myJSPrivateData*)JS_GetContextPrivate (cx))->view;	return view!=NULL ? view->m_doc : NULL;}JSObject *mgJSGetEventObj(JSContext *cx){	return ((myJSPrivateData*)JS_GetContextPrivate (cx))->eventObj;}JSObject *mgJSGetLocationObj(JSContext *cx){	return ((myJSPrivateData*)JS_GetContextPrivate (cx))->locationObj;}JSObject *mgJSGetNavigatorObj(JSContext *cx){	return ((myJSPrivateData*)JS_GetContextPrivate (cx))->navigatorObj;}JSObject *mgJSGetHistoryObj(JSContext *cx){	return ((myJSPrivateData*)JS_GetContextPrivate (cx))->historyObj;}JSObject *mgJSGetDocumentObj(JSContext *cx){	return ((myJSPrivateData*)JS_GetContextPrivate (cx))->documentObj;}JSObject *mgJSGetElementObj(JSContext *cx){	return ((myJSPrivateData*)JS_GetContextPrivate (cx))->elementObj;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -