# the following come from WebCore 2006-04-15 (WebKit/WebCore/html/HTMLNames.h)

abbr
accept
accept_charset
accesskey
action
align
alink
alt
archive
autocomplete
autosave
axis
background
behavior
bgcolor
bgproperties
border
bordercolor
cellborder
cellpadding
cellspacing
challenge
char
charoff
charset
checked
cite
class
classid
clear
code
codebase
codetype
color
cols
colspan
compact
composite
content
contenteditable
coords
data
datetime
declare
defer
dir
direction
disabled
enctype
face
for
frame
frameborder
headers
height
hidden
href
hreflang
hspace
http_equiv
id
incremental
ismap
keytype
label
lang
language
left
leftmargin
link
longdesc
loop
marginheight
marginwidth
max
maxlength
mayscript
media
method
min
multiple
name
nohref
noresize
noshade
nowrap
object
onabort
onbeforecopy
onbeforecut
onbeforepaste
onbeforeunload
onblur
onchange
onclick
oncontextmenu
oncopy
oncut
ondblclick
ondrag
ondragend
ondragenter
ondragleave
ondragover
ondragstart
ondrop
onerror
onfocus
oninput
onkeydown
onkeypress
onkeyup
onload
onmousedown
onmousemove
onmouseout
onmouseover
onmouseup
onmousewheel
onpaste
onreset
onresize
onscroll
onsearch
onselect
onselectstart
onsubmit
onunload
pagex
pagey
placeholder
plain
pluginpage
pluginspage
pluginurl
precision
profile
prompt
readonly
rel
results
rev
rows
rowspan
rules
scheme
scope
scrollamount
scrolldelay
scrolling
selected
shape
size
span
src
standby
start
style
summary
tabindex
tableborder
target
text
title
top
topmargin
truespeed
type
usemap
valign
value
valuetype
version
vlink
vspace
width
wrap

# was in khtml in 2004, but is no longer in WebCore
accept-charset
html
http-equiv
nosave
oversrc
unknown
visibility
z-index

# From Mozilla CVS 2006-04-15 (mozilla/layout/style/xbl-marquee)
bounce
finish
onbounce
onfinish
onstart


# IE specific, from msdn.microsoft.com/workshop/author/dhtml/reference/properties
acceptcharset
allowtransparency
balance
choff
datafld
dataformatas
datapagesize
datasrc
dynsrc
framespacing
galleryimg
hidefocus
methods
scroll
units
urn
volume

# From Mozilla CVS 2006-04-15 (mozilla/content/base/src/nsGkAtomList.h)
# To get these, I used:
# ggrep -r "Get.*Attr" * | perl -ne 'if (/nsHTMLAtoms::(\w+)/) { \
# system("grep \\($1, content/base/src/nsGkAtomList.h"); }' \
# | cut -d\" -f2 | sort -u
autocheck
base
bottommargin
event
font-weight
handler
layout
observer
ping
point-size
rightmargin
variable

# events from Mozilla CVS 2006-04-15 (mozilla/content/base/src/nsGkAtomList.h)
# cat nsGkAtomList.h | grep GK_ATOM | cut -d\" -f2 | egrep "^on[a-z]+"
onzoom
onunderflow
ontext
onset
onpopupshown
onpopupshowing
onpopuphiding
onpopuphidden
onpaint
onpageshow
onpagehide
onoverflowchanged
onoverflow
onget
ondraggesture
ondragexit
ondragdrop
oncompositionstart
oncompositionend
oncommandupdate
oncommand
onclose
