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

📄 navigator.c

📁 elinks下lynx是最重要的二个文本浏览器, 在linux下非常实用, elinks也是gentoo安装过程中默认使用的浏览器, 这是elinks源代码
💻 C
字号:
/* The SpiderMonkey location and history objects implementation. */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include "elinks.h"#include "ecmascript/spidermonkey/util.h"#include "bfu/dialog.h"#include "cache/cache.h"#include "cookies/cookies.h"#include "dialogs/menu.h"#include "dialogs/status.h"#include "document/html/frames.h"#include "document/document.h"#include "document/forms.h"#include "document/view.h"#include "ecmascript/ecmascript.h"#include "ecmascript/spidermonkey/navigator.h"#include "intl/gettext/libintl.h"#include "main/select.h"#include "osdep/newwin.h"#include "osdep/sysname.h"#include "protocol/http/http.h"#include "protocol/uri.h"#include "session/history.h"#include "session/location.h"#include "session/session.h"#include "session/task.h"#include "terminal/tab.h"#include "terminal/terminal.h"#include "util/conv.h"#include "util/memory.h"#include "util/string.h"#include "viewer/text/draw.h"#include "viewer/text/form.h"#include "viewer/text/link.h"#include "viewer/text/vs.h"static JSBool navigator_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp);const JSClass navigator_class = {	"navigator",	JSCLASS_HAS_PRIVATE,	JS_PropertyStub, JS_PropertyStub,	navigator_get_property, JS_PropertyStub,	JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub};enum navigator_prop {	JSP_NAVIGATOR_APP_CODENAME,	JSP_NAVIGATOR_APP_NAME,	JSP_NAVIGATOR_APP_VERSION,	JSP_NAVIGATOR_LANGUAGE,	/* JSP_NAVIGATOR_MIME_TYPES, */	JSP_NAVIGATOR_PLATFORM,	/* JSP_NAVIGATOR_PLUGINS, */	JSP_NAVIGATOR_USER_AGENT,};const JSPropertySpec navigator_props[] = {	{ "appCodeName",	JSP_NAVIGATOR_APP_CODENAME,	JSPROP_ENUMERATE | JSPROP_READONLY },	{ "appName",		JSP_NAVIGATOR_APP_NAME,		JSPROP_ENUMERATE | JSPROP_READONLY },	{ "appVersion",		JSP_NAVIGATOR_APP_VERSION,	JSPROP_ENUMERATE | JSPROP_READONLY },	{ "language",		JSP_NAVIGATOR_LANGUAGE,		JSPROP_ENUMERATE | JSPROP_READONLY },	{ "platform",		JSP_NAVIGATOR_PLATFORM,		JSPROP_ENUMERATE | JSPROP_READONLY },	{ "userAgent",		JSP_NAVIGATOR_USER_AGENT,	JSPROP_ENUMERATE | JSPROP_READONLY },	{ NULL }};static JSBoolnavigator_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp){	if (!JSVAL_IS_INT(id))		return JS_TRUE;	undef_to_jsval(ctx, vp);	switch (JSVAL_TO_INT(id)) {	case JSP_NAVIGATOR_APP_CODENAME:		string_to_jsval(ctx, vp, "Mozilla"); /* More like a constant nowadays. */		break;	case JSP_NAVIGATOR_APP_NAME:		/* This evil hack makes the compatibility checking .indexOf()		 * code find what it's looking for. */		string_to_jsval(ctx, vp, "ELinks (roughly compatible with Netscape Navigator, Mozilla and Microsoft Internet Explorer)");		break;	case JSP_NAVIGATOR_APP_VERSION:		string_to_jsval(ctx, vp, VERSION);		break;	case JSP_NAVIGATOR_LANGUAGE:#ifdef CONFIG_NLS		if (get_opt_bool("protocol.http.accept_ui_language"))			string_to_jsval(ctx, vp, language_to_iso639(current_language));#endif		break;	case JSP_NAVIGATOR_PLATFORM:		string_to_jsval(ctx, vp, system_name);		break;	case JSP_NAVIGATOR_USER_AGENT:	{		/* FIXME: Code duplication. */		unsigned char *optstr = get_opt_str("protocol.http.user_agent");		if (*optstr && strcmp(optstr, " ")) {			unsigned char *ustr, ts[64] = "";			static unsigned char custr[256];			if (!list_empty(terminals)) {				unsigned int tslen = 0;				struct terminal *term = terminals.prev;				ulongcat(ts, &tslen, term->width, 3, 0);				ts[tslen++] = 'x';				ulongcat(ts, &tslen, term->height, 3, 0);			}			ustr = subst_user_agent(optstr, VERSION_STRING, system_name, ts);			if (ustr) {				safe_strncpy(custr, ustr, 256);				mem_free(ustr);				string_to_jsval(ctx, vp, custr);			}		}	}		break;	default:		INTERNAL("Invalid ID %d in navigator_get_property().", JSVAL_TO_INT(id));		break;	}	return JS_TRUE;}

⌨️ 快捷键说明

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