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

📄 elinks_object.c

📁 elinks下lynx是最重要的二个文本浏览器, 在linux下非常实用, elinks也是gentoo安装过程中默认使用的浏览器, 这是elinks源代码
💻 C
字号:
/* The "elinks" object */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "elinks.h"#include "config/home.h"#include "ecmascript/spidermonkey/util.h"#include "protocol/uri.h"#include "scripting/scripting.h"#include "scripting/smjs/bookmarks.h"#include "scripting/smjs/core.h"#include "scripting/smjs/elinks_object.h"#include "scripting/smjs/global_object.h"#include "scripting/smjs/keybinding.h"#include "session/location.h"#include "session/session.h"#include "session/task.h"static JSBoolelinks_get_home(JSContext *ctx, JSObject *obj, jsval id, jsval *vp){	*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(smjs_ctx, elinks_home));	return JS_TRUE;}static JSBoolelinks_get_location(JSContext *ctx, JSObject *obj, jsval id, jsval *vp){	struct uri *uri;	if (!smjs_ses) return JS_FALSE;	uri = have_location(smjs_ses) ? cur_loc(smjs_ses)->vs.uri	                              : smjs_ses->loading_uri;	if (!uri) return JS_FALSE;	*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(smjs_ctx, struri(uri)));	return JS_TRUE;}static JSBoolelinks_set_location(JSContext *ctx, JSObject *obj, jsval id, jsval *vp){	JSString *jsstr;	unsigned char *url;	if (!smjs_ses) return JS_FALSE;	jsstr = JS_ValueToString(smjs_ctx, *vp);	if (!jsstr) return JS_FALSE;	url = JS_GetStringBytes(jsstr);	if (!url) return JS_FALSE;	goto_url(smjs_ses, url);	return JS_TRUE;}static JSBoolelinks_alert(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){	unsigned char *string;	if (argc != 1)		return JS_TRUE;	string = jsval_to_string(ctx, &argv[0]);	if (!*string)		return JS_TRUE;	alert_smjs_error(string);	undef_to_jsval(ctx, rval);	return JS_TRUE;}static const JSClass elinks_class = {	"elinks",	0,	JS_PropertyStub, JS_PropertyStub,	JS_PropertyStub, JS_PropertyStub,	JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub};static const JSFunctionSpec elinks_funcs[] = {	{ "alert",	elinks_alert,		1 },	{ NULL }};static JSObject *smjs_get_elinks_object(void){	JSObject *jsobj;	assert(smjs_ctx);	assert(smjs_global_object);	jsobj = JS_InitClass(smjs_ctx, smjs_global_object, NULL,	                     (JSClass *) &elinks_class, NULL, 0, NULL,	                     (JSFunctionSpec *) elinks_funcs, NULL, NULL);	JS_DefineProperty(smjs_ctx, jsobj, "location", JSVAL_NULL,	                  elinks_get_location, elinks_set_location,	                  JSPROP_ENUMERATE | JSPROP_PERMANENT);	JS_DefineProperty(smjs_ctx, jsobj, "home", JSVAL_NULL,	                  elinks_get_home, JS_PropertyStub,	                  JSPROP_ENUMERATE	                   | JSPROP_PERMANENT	                   | JSPROP_READONLY);	return jsobj;}voidsmjs_init_elinks_object(void){	smjs_elinks_object = smjs_get_elinks_object();	smjs_init_bookmarks_interface();	smjs_init_keybinding_interface();}/* If elinks.<method> is defined, call it with the given arguments, * store the return value in rval, and return JS_TRUE. Else return JS_FALSE. */JSBoolsmjs_invoke_elinks_object_method(unsigned char *method, jsval argv[], int argc,                                 jsval *rval){	JSFunction *func;	assert(smjs_ctx);	assert(smjs_elinks_object);	assert(rval);	assert(argv);	if (JS_FALSE == JS_GetProperty(smjs_ctx, smjs_elinks_object,	                               method, rval))		return JS_FALSE;	if (JSVAL_VOID == *rval)		return JS_FALSE;	func = JS_ValueToFunction(smjs_ctx, *rval);	assert(func);	return JS_CallFunction(smjs_ctx, smjs_elinks_object,		               func, argc, argv, rval);}

⌨️ 快捷键说明

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