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

📄 mgjs_location.cpp

📁 monqueror一个很具有参考价值的源玛
💻 CPP
字号:
#include "mgjs_main.h"static JSBool myjs_GetLocationProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool myjs_SetLocationProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool myjsLoca_reload (JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);static JSBool myjsLoca_replace (JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);enum myjs_eLocationProps {	MYJSLOC_HASH,	MYJSLOC_HOST,	MYJSLOC_HOSTNAME,	MYJSLOC_HREF,	MYJSLOC_PATHNAME,	MYJSLOC_PORT,	MYJSLOC_PROTOCOL,	MYJSLOC_SEARCH};static JSBool myjs_GetLocationProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp){	MGHTMLView *view = mgJSGetView(cx);	KURL url = view->m_windowurl;	QString str=url.ref();  if (JSVAL_IS_INT(id)) {        switch (JSVAL_TO_INT(id)) {        case MYJSLOC_HASH:			*vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx, str));            break;		case MYJSLOC_HOST:		    str = url.host();		    if (url.port())      		str += ":" + QString::number(url.port());			*vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx, str));			break;		case MYJSLOC_HOSTNAME:		    str = url.host();			*vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx, str));			break;		case MYJSLOC_HREF:		    str = url.prettyURL();			*vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx, str));			break;		case MYJSLOC_PATHNAME:		    str = url.path();			*vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx, str));			break;		case MYJSLOC_PORT:		    str = url.port() ? QString::number(url.port()) : QString::fromLatin1("");			*vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx, str));			break;		case MYJSLOC_PROTOCOL:			str = url.protocol();			*vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx, str));			break;		case MYJSLOC_SEARCH:		    str = url.query();			*vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx, str));			break;		}	}	return JS_TRUE;}static JSBool myjs_SetLocationProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp){#if 0	JSString* text;	HWND hWnd = mgJSGethWnd(cx);#endif	QString str;	if (JSVAL_IS_INT(id)) {		switch (JSVAL_TO_INT(id)) {			case MYJSLOC_HREF:		//				str=JSVAL_TO_STRING(*vp);				//TODO:				//part->scheduleRedirection(0, str);				break;			}	}	return JS_TRUE;}static JSBool myjsLoca_reload (JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSBool myjsLoca_replace (JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	return JS_TRUE;}static JSPropertySpec myjs_LocationProps[] = {        {"hash",    MYJSLOC_HASH,    JSPROP_ENUMERATE},		{"host",    MYJSLOC_HOST,       JSPROP_ENUMERATE},        {"hostname",MYJSLOC_HOSTNAME,JSPROP_ENUMERATE,},        {"href",       MYJSLOC_HREF,       JSPROP_ENUMERATE},        {"pathname",   MYJSLOC_PATHNAME,     JSPROP_ENUMERATE},        {"port",       MYJSLOC_PORT,    JSPROP_ENUMERATE},        {"protocol",   MYJSLOC_PROTOCOL,    JSPROP_ENUMERATE},        {"search",    MYJSLOC_SEARCH,    JSPROP_ENUMERATE},        {0}    };static JSFunctionSpec myjs_LocationMethods[] = {//        name          native          nargs            {"reload",      myjsLoca_reload,  1},        {"replace",     myjsLoca_replace, 1},        {0}};static JSClass myjs_LocationClass = {        "Location", 0,        JS_PropertyStub, JS_PropertyStub, myjs_GetLocationProperty, myjs_SetLocationProperty,        JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub };JSObject* InitLocationClass(JSContext *cx,JSObject *globalObj,JSObject *proto){	JSObject *Obj;	Obj = JS_DefineObject (cx,globalObj, "location", &myjs_LocationClass,proto,JSPROP_ENUMERATE);    JS_DefineProperties (cx,Obj,myjs_LocationProps);    JS_DefineFunctions (cx,Obj,myjs_LocationMethods);	return Obj;}		

⌨️ 快捷键说明

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