I found this on the mailing list. I haven't tried it yet. From: Tetsurou Okazaki <[EMAIL PROTECTED]> Subject: [emacs-w3m:10279] Re: <button> on forms Newsgroups: gmane.emacs.w3m To: [EMAIL PROTECTED] Date: Wed, 02 Jul 2008 14:05:57 +1000 Reply-To: [EMAIL PROTECTED]
At Tue, 01 Jul 2008 20:48:22 +0800, [EMAIL PROTECTED] wrote: > > Can anybody submit Wordpress comments? > E.g., on http://pinyin.info/news/2006/chinese-literacy/ > there is > <button name="submit" type="submit" id="submit" tabindex="5">Submit > Comment</button> > > Lynx and firefox makes it clickable, but emacs-w3m and I am afraid w3m > too, just show it as text. > Try the attached patch to the current CVS HEAD of the w3m source tree. -- Tetsurou Okazaki Obtained from: http://www.sic.med.tohoku.ac.jp/~satodai/w3m-dev/200203.month/3100.html Index: tagtable.tab =================================================================== RCS file: /cvsroot/w3m/w3m/tagtable.tab,v retrieving revision 1.12 diff -u -r1.12 tagtable.tab --- tagtable.tab 10 Dec 2006 11:06:12 -0000 1.12 +++ tagtable.tab 2 Jul 2008 03:21:05 -0000 @@ -87,6 +87,8 @@ form HTML_FORM /form HTML_N_FORM input HTML_INPUT +button HTML_BUTTON +/button HTML_N_BUTTON textarea HTML_TEXTAREA /textarea HTML_N_TEXTAREA select HTML_SELECT Index: table.c =================================================================== RCS file: /cvsroot/w3m/w3m/table.c,v retrieving revision 1.55 diff -u -r1.55 table.c --- table.c 23 May 2007 13:07:44 -0000 1.55 +++ table.c 2 Jul 2008 03:21:05 -0000 @@ -2873,6 +2873,14 @@ tmp = process_input(tag); feed_table1(tbl, tmp, mode, width); break; + case HTML_BUTTON: + tmp = process_button(tag); + feed_table1(tbl, tmp, mode, width); + break; + case HTML_N_BUTTON: + tmp = process_n_button(); + feed_table1(tbl, tmp, mode, width); + break; case HTML_SELECT: tmp = process_select(tag); if (tmp) Index: proto.h =================================================================== RCS file: /cvsroot/w3m/w3m/proto.h,v retrieving revision 1.101 diff -u -r1.101 proto.h --- proto.h 7 Apr 2006 13:21:12 -0000 1.101 +++ proto.h 2 Jul 2008 03:21:05 -0000 @@ -203,6 +203,8 @@ extern Str process_img(struct parsed_tag *tag, int width); extern Str process_anchor(struct parsed_tag *tag, char *tagbuf); extern Str process_input(struct parsed_tag *tag); +extern Str process_button(struct parsed_tag *tag); +extern Str process_n_button(void); extern Str process_select(struct parsed_tag *tag); extern Str process_n_select(void); extern void feed_select(char *str); Index: html.h =================================================================== RCS file: /cvsroot/w3m/w3m/html.h,v retrieving revision 1.29 diff -u -r1.29 html.h --- html.h 23 May 2007 12:01:43 -0000 1.29 +++ html.h 2 Jul 2008 03:21:05 -0000 @@ -202,6 +202,8 @@ #define HTML_N_I 110 #define HTML_STRONG 111 #define HTML_N_STRONG 112 +#define HTML_BUTTON 113 +#define HTML_N_BUTTON 114 /* pseudo tag */ #define HTML_SELECT_INT 120 Index: html.c =================================================================== RCS file: /cvsroot/w3m/w3m/html.c,v retrieving revision 1.30 diff -u -r1.30 html.c --- html.c 19 Apr 2007 12:00:38 -0000 1.30 +++ html.c 2 Jul 2008 03:21:05 -0000 @@ -56,6 +56,9 @@ ATTR_CORE }; #define MAXA_INPUT MAXA_CORE + 12 +unsigned char ALST_BUTTON[] = + { ATTR_TYPE, ATTR_VALUE, ATTR_NAME, ATTR_CORE }; +#define MAXA_BUTTON MAXA_CORE + 3 unsigned char ALST_TEXTAREA[] = { ATTR_COLS, ATTR_ROWS, ATTR_NAME, ATTR_READONLY, ATTR_CORE }; #define MAXA_TEXTAREA MAXA_CORE + 4 @@ -235,8 +238,8 @@ {"/i", NULL, 0, TFLG_END}, /* 110 HTML_N_I */ {"strong", NULL, 0, 0}, /* 111 HTML_STRONG */ {"/strong", NULL, 0, TFLG_END}, /* 112 HTML_N_STRONG */ - {NULL, NULL, 0, 0}, /* 113 Undefined */ - {NULL, NULL, 0, 0}, /* 114 Undefined */ + {"button", ALST_BUTTON, MAXA_BUTTON, 0}, /* 113 HTML_BUTTON */ + {"/button", NULL, 0, TFLG_END}, /* 114 HTML_N_BUTTON */ {NULL, NULL, 0, 0}, /* 115 Undefined */ {NULL, NULL, 0, 0}, /* 116 Undefined */ {NULL, NULL, 0, 0}, /* 117 Undefined */ Index: file.c =================================================================== RCS file: /cvsroot/w3m/w3m/file.c,v retrieving revision 1.254 diff -u -r1.254 file.c --- file.c 23 May 2007 15:06:05 -0000 1.254 +++ file.c 2 Jul 2008 03:21:06 -0000 @@ -3704,6 +3704,63 @@ } Str +process_button(struct parsed_tag *tag) +{ + Str tmp = NULL; + char *p, *q, *r, *qq = NULL; + int qlen, v; + + if (cur_form_id < 0) { + char *s = "<form_int method=internal action=none>"; + tmp = process_form(parse_tag(&s, TRUE)); + } + if (tmp == NULL) + tmp = Strnew(); + + p = "submit"; + parsedtag_get_value(tag, ATTR_TYPE, &p); + q = NULL; + parsedtag_get_value(tag, ATTR_VALUE, &q); + r = ""; + parsedtag_get_value(tag, ATTR_NAME, &r); + + v = formtype(p); + if (v == FORM_UNKNOWN) + return NULL; + + if (!q) { + switch (v) { + case FORM_INPUT_SUBMIT: + case FORM_INPUT_BUTTON: + q = "SUBMIT"; + break; + case FORM_INPUT_RESET: + q = "RESET"; + break; + } + } + if (q) { + qq = html_quote(q); + qlen = strlen(q); + } + + /* Strcat_charp(tmp, "<pre_int>"); */ + Strcat(tmp, Sprintf("<input_alt hseq=\"%d\" fid=\"%d\" type=%s " + "name=\"%s\" value=\"%s\">", + cur_hseq++, cur_form_id, p, html_quote(r), qq)); + return tmp; +} + +Str +process_n_button(void) +{ + Str tmp = Strnew(); + Strcat_charp(tmp, "</input_alt>"); + /* Strcat_charp(tmp, "</pre_int>"); */ + return tmp; +} + +Str process_select(struct parsed_tag *tag) { Str tmp = NULL; @@ -4927,6 +4984,18 @@ if (tmp) HTMLlineproc1(tmp->ptr, h_env); return 1; + case HTML_BUTTON: + close_anchor(h_env, obuf); + tmp = process_button(tag); + if (tmp) + HTMLlineproc1(tmp->ptr, h_env); + return 1; + case HTML_N_BUTTON: + close_anchor(h_env, obuf); + tmp = process_n_button(); + if (tmp) + HTMLlineproc1(tmp->ptr, h_env); + return 1; case HTML_SELECT: close_anchor(h_env, obuf); tmp = process_select(tag); -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]