Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
1419 lines (1297 sloc) 95.4 KB
<!doctype html>
<!--[if lt IE 9 ]><html lang="en" class="no-js shitty"><![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="en" class="no-js"><!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>W3Fools - A takedown of W3Schools. &gt;:|</title>
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neucha">
<link rel="stylesheet" href="css/style.css?v=2">
<script src="js/libs/modernizr-1.6.min.js"></script>
</head>
<!--
###L
i####L
K# ######
,## .### ;##
### ###K ##
###W ### D#:
t# f K##D ##
# t: ### ##
## G: ###f ##
f# L#### ;#. :f##
### ;#: ## ## ;#########
f#f## ## ########E .##
## L### f ##
# #i ##
## ##
##. #i :#.
L### # WG ##
# ##### :#K. f##W
# W# :##. ,###
f# DW# G###
# ### ####. t###t
:W## G iW#######K: ###L
## jW##W ####
## .i ;####
###E ## j#####
####W # i#####
####W j#D #### ####K
D####### ###W ###
####### ###: .#
#i W## f##j
## ####. ###
;##### #G ## #####
:####W#f # ### i# ##L ##
#D #i #### #### :
#D #### ,# ###.
# W; ####G
# # # j# ##
#t i #t E# f #;
W. .## ## # #W E#
## #j t E####j #;EL# #.
W#K : # K######;i L#
#### # #######. ,#
i# W ;###### #L
# # fD ## ##
# # E# ##
DW E# #########
##W W# ## W
#K####D.## ## W#
,#. D### E###E ## #
##L f## . #t
####### L#L . ##
;# fD K## # #W
## ###, i#: G#
##G ####W, :##W ,#
#####, GG####### ##
E# GW## ### .##
.#K ,######, G##
:#i ######### #D W##
####. ##E # ####### W###########,
#EG###W ,##################:
#K :#### i##K i######i .#######;
# E### :W######D G#### E#####
W# .#####K #L ,### E####
## . ,##E W###
f####K: G# ### .###
## :W######W# ;###### ### ###
# jK#####L .# ##: ## :
## D# K# ## ###
#####D ##: ## ##i ###L
K###########, KW ,##### #G ## ##G
## ;K#########L .# ## Dt ;###W
## # # LW ### :# G #####W
W##D ## W K##E #: G
.#######E # W ;##### G## #j
# t#########Wjt ##G E###### K #E L##,
f# L##### ## :, LL ######
D# # #f ##### :: ######:
# W# ######L #i
# : Kj # # .
# ##,#
# # #### W##E ## ,#:
## # ######: #####D ## ,#:
D# ##::K########### ## ## tj G: ## L; Li L, ,#: .G;
##################### ## ## ## ## W####f ##### ###### #####. W####: ,#: #####
############G .### ## ## ## ### ## ## E#, ## ## ## j## ## ;#L ## ,#: ## ##
######G #####. # #D# .#.K##;f# t## ####j ## ## ## ##. ## ## ## ,#: ####.
#####. ###### # . # ###j#### ,# K# .#### ## ## ## ## ## ## ## ,#: D###K
#####L W##### # ### ##K ## ## ## ## W# ## ## ## D## ## f#, ## ,#: #: ##
### # W###, G## ### ## ###### ###### ##### ## ## ###### ###### ,#: ##G##K
### #t ##. # ,, ,, WK KWi i#G ,, :, WK :WE , ;#K
#####KG###WfDK#########E###i
##. #####KKKEfjGD############
## K#####W; ;W#K ###; # K#
#, ## D#######G E#.# #
## :# E#
##WW##t ###
W######. i###K#,
W ####################..###
#######E ;GKKKEG, W###;
W#################
W########W;
-->
<body>
<div id="container">
<header>
<h1 id="intervention"><b>W3Schools</b> An Intervention</h1>
<h2>Are you using? Abusing? We are here to help.</h2>
</header>
<div id="main" role="main">
<div class="intro"><!--START CLASS intro-->
<p>
A few of us have been collecting cases where w3schools.com contains inaccurate information or just really
bad advice.
</p>
<cite>~ Paul Irish, January 7th, 2011</cite>
</div><!--END CLASS intro-->
<section class="content">
<div id="contributors">
<h2>Thanks!</h2>
<a href="http://twitter.com/paul_irish" class="twitter-anywhere-user"><span class="at">@</span>paul_irish</a>
<a href="http://twitter.com/ajpiano" class="twitter-anywhere-user"><span class="at">@</span>ajpiano</a>
<a href="http://twitter.com/gf3" class="twitter-anywhere-user"><span class="at">@</span>gf3</a>
<a href="http://twitter.com/zetafleet" class="twitter-anywhere-user"><span class="at">@</span>zetafleet</a>
<a href="http://twitter.com/nimbuin" class="twitter-anywhere-user"><span class="at">@</span>nimbuin</a>
<a href="http://twitter.com/danheberden" class="twitter-anywhere-user"><span class="at">@</span>danheberden</a>
<a href="http://twitter.com/peolanha" class="twitter-anywhere-user"><span class="at">@</span>peolanha</a>
<a href="http://twitter.com/bjorninge" class="twitter-anywhere-user"><span class="at">@</span>bjorninge</a>
<a href="http://twitter.com/erichynds" class="twitter-anywhere-user"><span class="at">@</span>erichynds</a>
<a href="http://twitter.com/kangax" class="twitter-anywhere-user"><span class="at">@</span>kangax</a>
<a href="http://twitter.com/robfaraj" class="twitter-anywhere-user"><span class="at">@</span>robfaraj</a>
<a href="http://twitter.com/devongovett" class="twitter-anywhere-user"><span class="at">@</span>devongovett</a>
<a href="http://twitter.com/antimatter15" class="twitter-anywhere-user"><span class="at">@</span>antimatter15</a>
<a href="http://twitter.com/millermedeiros" class="twitter-anywhere-user"><span class="at">@</span>millermedeiros</a>
<a href="http://twitter.com/sephr" class="twitter-anywhere-user"><span class="at">@</span>sephr</a>
<a href="http://twitter.com/ard" class="twitter-anywhere-user"><span class="at">@</span>ard</a>
<a href="http://twitter.com/atornblad" class="twitter-anywhere-user"><span class="at">@</span>atornblad</a>
<a href="http://twitter.com/lightroy" class="twitter-anywhere-user"><span class="at">@</span>lightroy</a>
<a href="http://twitter.com/ekashida" class="twitter-anywhere-user"><span class="at">@</span>ekashida</a>
<a href="http://twitter.com/edwinm" class="twitter-anywhere-user"><span class="at">@</span>edwinm</a>
<a href="http://twitter.com/bradneuberg" class="twitter-anywhere-user"><span class="at">@</span>bradneuberg</a>
<a href="http://twitter.com/darcy_clarke" class="twitter-anywhere-user"><span class="at">@</span>darcy_clarke</a>
<a href="http://twitter.com/c_t_montgomery" class="twitter-anywhere-user"><span class="at">@</span>c_t_montgomery</a>
<a href="http://twitter.com/jamespearce" class="twitter-anywhere-user"><span class="at">@</span>jamespearce</a>
<a href="http://twitter.com/kriskowal" class="twitter-anywhere-user"><span class="at">@</span>kriskowal</a>
<a href="http://twitter.com/mrnibbles" class="twitter-anywhere-user"><span class="at">@</span>mrnibbles</a>
<a href="http://twitter.com/addyosmani" class="twitter-anywhere-user"><span class="at">@</span>addyosmani</a>
<a href="http://twitter.com/miketaylr" class="twitter-anywhere-user"><span class="at">@</span>miketaylr</a>
<a href="http://twitter.com/mathias" class="twitter-anywhere-user"><span class="at">@</span>mathias</a>
<a href="http://twitter.com/franksvalli" class="twitter-anywhere-user"><span class="at">@</span>franksvalli</a>
<a href="http://twitter.com/jerem" class="twitter-anywhere-user"><span class="at">@</span>jerem</a>
<a href="http://twitter.com/brianloveswords" class="twitter-anywhere-user"><span class="at">@</span>brianloveswords</a>
<a href="http://twitter.com/trygve_lie" class="twitter-anywhere-user"><span class="at">@</span>trygve_lie</a>
<a href="http://twitter.com/scriptin" class="twitter-anywhere-user"><span class="at">@</span>scriptin</a>
<a href="http://twitter.com/heycam" class="twitter-anywhere-user"><span class="at">@</span>heycam</a>
<a href="http://twitter.com/gridinoc" class="twitter-anywhere-user"><span class="at">@</span>gridinoc</a>
<a href="http://twitter.com/kfranqueiro" class="twitter-anywhere-user"><span class="at">@</span>kfranqueiro</a>
<a href="http://twitter.com/bentruyman" class="twitter-anywhere-user"><span class="at">@</span>bentruyman</a>
<a href="http://twitter.com/slexaxton" class="twitter-anywhere-user"><span class="at">@</span>slexaxton</a>
<a href="http://twitter.com/seankoole" class="twitter-anywhere-user"><span class="at">@</span>seankoole</a>
<a href="http://twitter.com/beverloo" class="twitter-anywhere-user"><span class="at">@</span>beverloo</a>
<a href="http://twitter.com/alrra" class="twitter-anywhere-user"><span class="at">@</span>alrra</a>
</div>
</section>
<section class="content"><h2 id="trouble">W3Schools is trouble</h2>
<ol>
<li class="noaffiliation">
W3Schools.com is <strong>not affiliated with the W3C</strong>. In fact, we have heard that the W3C has asked them to disavow any connection by explicitly
stating they are unrelated. W3Schools refused. <!-- This fact is from conversations with W3C employees, but afaik it is not published publicly on he web. Sorry. :( -->
</li>
<li class="cert">
W3Schools <a href="http://www.w3schools.com/cert/default.asp">sell their certificates</a> (for $95), but are not affiliated with any
educational institutions, nor do any employers recognize and respect said certifications.
</li>
<li class="incorrect">
W3Schools publishes inaccurate, misleading, and confusing content. Just scroll down this page. We dare you.
<sup><a href="#cmnt3" id="cmnt_ref3">[c]</a></sup>
</li>
</ol>
</section>
<section class="belief"><p>We believe w3schools is harmful to the web. Web developers deserve better.</p></section>
<section class="content"><h2 id="why-it-matters">Why does it matter?</h2>
<h4>Bad education hurts.</h4>
<ol>
<li>Being educated poorly hampers your ability to score a good job.
<li>Inaccurate references slow development and cause costly QA loops.
<li>Learning key web development idioms slowly or wrongly puts you years behind your own colleagues.
</ol></section>
<!--
<something about putting ‘mdc’ in your search query>
To filter out w3school in your google search, append “-w3school” to your search without the quotes. To get the document from MDC,
just append mdc to your search query.
On recommendations.. htmldog for beginner html/css, MDC for intermediate css and javascript, i think.
-->
<section class="content"><h2 id="what-should-be-done">What should be done</h2>
<ol>
<li>
W3schools should consider <abbr title="make the site a wiki. Or.. put it all in public source control, like on Github.">wikifying</abbr> their content so the community would self correct and keep the information
up-to-date. Today, they do not even allow you to submit corrections on a page. They should.
</li>
<li>You should learn from reputable sources.
<ul>
<li><a href="http://htmldog.com/">HTML Dog</a> is a fantastic and comprehensive intro for HTML and CSS.
<li><a href="http://dev.opera.com/articles/view/1-introduction-to-the-web-standards-cur/#toc">Opera Web Standards Curriculum</a> covers the basics of web standards-based design in HTML and CSS.
<li><a href="http://code.google.com/edu/submissions/html-css-javascript/">Google's HTML, CSS, and Javascript from the Ground Up</a> presents the basics of web development with video tutorials presented by Google's expert web developers.
<li>The W3C, itself, has a wiki-based general <a href="http://www.w3.org/html/wiki/Learn">Learn</a> page as well as an
<a href="http://www.w3.org/html/wiki/Elements">HTML element reference</a>.
<li><p><a href="https://developer.mozilla.org/en-US/docs">The MDC (Mozilla's Doc Center)</a> takes over at intermediate CSS and covers JavaScript better than anyone. </p><p> The MDC is also a wiki (little known fact),
which means we, as knowledgeable web developers, can add or change information so the pages are as effective and comprehensive as possible.</p>
</ul>
</li>
<!-- <li>
Until they fix their content, we urge everyone, not just web
developers, to stop linking to or referencing w3schools.
<sup><a href="#cmnt4" id="cmnt_ref4">[d]</a></sup>
</li> -->
<!-- http://news.ycombinator.com/item?id=2082089 -->
</ol></section>
<section class="content"><h2 id="build-one-yourselves">"Build One Yourselves"</h2>
<p>
An oft-repeated mantra in OSS - and critique we've received - is that you shouldn't criticise a project unless you actually want to put
your money where your mouth is and build something better. It's an admirable ethos, but not really applicable to this conundrum.
W3schools has put a lot of effort into positioning itself at the top of search results and, for better or worse, appears to be there to stay.
While building an entire site to provide entry-level reference for HTML, CSS, JavaScript and more may be a worthwhile endeavour, it is not an
insignificant one. We believe it is W3schools' <em>responsibility</em> to use their lofty position to disseminate accurate information that is
not potentially detrimental to its consumers.
</section>
<!--
<ol class="c14"><li class="c11" value="1"><span>Yeah right. They are just there to make money on ads</span></li></ol><ol><li value="6"><span>Help rather than pillory ;-) - tbh a lot of their mistakes are just because things have moved on and they're not editing the old material (like 10 years old!) to bring it up-to-date. Wiki or similar would be perfect. </span><span>Question is&hellip; what motivation do they have to improve things? </span><sup><a href="#cmnt7" id="cmnt_ref7">[g]</a></sup><span>What is the StackOverflow to W3Schools' ExpertsExchange ?</span></li></ol><ol class="c14"><li class="c11" value="1"><span>IMHO it's the MDC&hellip; it's a wiki. It's got decent enough SEO.. Until/Unless I'm successful at getting the MDC to be moved from Mozilla to the W3C and then blow it out to totally game the SEO biz, while being a wiki and being super comprehensive&hellip;.. .. well that </span><span>sounds good</span><sup><a href="#cmnt8" id="cmnt_ref8">[h]</a></sup><span>. :) ~paul
^ is this relevant on this page?
-->
<section class="sucks clearfix">
<div class="intro" id="why-w3schools-sucks">
<p>From W3Schools' own footer&hellip;</p>
<blockquote>
W3Schools is for training only. We do not warrant the correctness of its content. The risk from using it lies entirely with the user.
</blockquote>
<p>No shit.</p>
<p>Now&hellip; collected and commentated by the above JavaScript community members, let's take a gander through what sort of "risk" the user is exposed to here&hellip;</p>
</div>
<nav><a href="#htmlsucks">HTML</a><a href="#csssucks">CSS</a><a href="#jssucks">JavaScript</a><a href="#othersucks">Others</a></nav>
<ul>
<li id="htmlsucks">
<h3>HTML</h3>
<ul>
<li>
<a href="http://www.w3schools.com/html/html_headings.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_headings.asp</a>.
<blockquote>
Note: Browsers automatically add an empty line before and after a heading.
</blockquote>
<p>
Orrrr, actually it's because the browser's default stylesheet defines them as block-level, and that <code>margin-top</code>
and <code>margin-bottom</code> are non-zero values -- no lines are added.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/html5_intro.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/html5_intro.asp</a>.
<blockquote>
The latest versions of Safari, Chrome, Firefox, and Opera support some HTML5 features. Internet Explorer 9 will support some HTML5 features.
</blockquote>
<p>
Some IE features are now being standardized by HTML5, e.g. <code>contenteditable</code> which has been supported for ages in Internet Explorer.
IE8 also supports <code>localStorage</code>.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_getstarted.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_getstarted.asp</a>.
<blockquote>
[&hellip;] professional web developers often prefer HTML editors like FrontPage or Dreamweaver, instead of writing plain text
</blockquote>
<p>
WHAT? Incredible. They've got paid to say this?
AAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHH <span class="c25">Z&#870;&#849;&#781;&#781;&#850;&#872;&#794;&#819;&#851;&#852;&#854;A&#787;&#774;&#834;&#838;L&#773;&#798;&#827;&#790;&#852;&#812;&#810;G&#780;&#848;&#772;&#816;&#819;O&#813;&#809;&#791;!&#873;&#787;&#850;&#869;&#848;&#867;&#836;&#805;&#812;&#841;</span> :O
</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/tag_script.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/tag_script.asp</a>.
<blockquote>
The required <code>type</code> attribute specifies the MIME type of the script.
</blockquote>
<p>In HTML5, This is "optional", not "required".</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_styles.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_styles.asp</a>.
<p>All and everything on this page is just absolutely deprecated. Should be taken down, rewritten or add a big-ass notice.</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_frames.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_frames.asp</a>.
<p>What's up, 1995. </p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_elements.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_elements.asp</a>.
<p>No doctype&hellip;</p>
<blockquote>
Most browsers will display HTML correctly even if you forget the end tag
</blockquote>
<p>
Not true, "correctly" is not "try to guess and maybe get it right some of the time." However, <code>&lt;P&gt;</code>
will. <code>&lt;P&gt;</code> is explicitly stated to have an optional close tag. Most other elements are not.
<a href="http://www.w3.org/TR/REC-html40/struct/text.html#h-9.3.1">www.w3.org/TR/REC-html40/struct/text.html#h-9.3.1</a>.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_getstarted.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_getstarted.asp</a>.
<blockquote>
When you save an HTML file, you can use either the <code>.htm</code> or the <code>.html</code> file extension. We use <code>.htm</code> in
our examples. It is a habit from the past, when the software only allowed three letters in file extensions. With new software
it is perfectly safe to use <code>.html</code>
</blockquote>
<p>
With "new software"??? What?! Apparently, Unix is "new software" since it has supported arbitrary 255-character
file names since, oh, only 1983!
</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/html5_webstorage.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/html5_webstorage.asp</a>.
<p>
<code>localStorage</code> and <code>sessionStorage</code> are called "methods," rather than objects that implement the HTML5
Storage interface. Nothing about their properties and methods are mentioned, it just shows a simple dot syntax getter example. &gt;:|
And this "content" is certainly not as old as other pages'.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/html5_ref_standardattributes.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/html5_ref_standardattributes.asp</a>.
<p>
The <code>hidden</code> attribute is a boolean attribute, which means that its presence defines the (true) value. There is no such thing as the <code>subject</code> attribute. Instead of listing all five microdata attributes, let's only list two and neglect to explain how they should be used - leaving the visitor clueless. Oh, and <code>dir</code> and <code>dropzone</code> are missing too.
</p>
</li>
<li>
<a href="http://www.w3schools.com/htmldom/dom_nodes_access.asp" rel="nofollow" class="w3s-link">www.w3schools.com/htmldom/dom_nodes_access.asp</a>.
<p>
One of many examples. Code does not use the <code>var</code> keyword. They don't explain the difference between using and not
using the keyword; <code>var</code> should always be used.
</p>
</li>
<li>
<a href="http://www.w3schools.com/tags/tag_q.asp" rel="nofollow" class="w3s-link">www.w3schools.com/tags/tag_q.asp</a>.
<p>ALSO WRONG. AS IN NOT FACTUAL&hellip; <a href="http://jsbin.com/ipoqu">jsbin.com/ipoqu4</a> works in IE8, not IE7 compat.</p>
<p>So this page is probably out of date, along with fucking everything on their site, which is why it blows.</p>
<!-- Move this somewhere else, seems a bit more general and shouldn't under a specific topic? -->
<p>
Prolific use of <code>new Array()</code> and <code>array[0] = "foo"; array[1] = "bar"</code> instead of
<code>["foo", "bar"]</code>.
</p>
</li>
<li>
<p>Love their markup: table in table in table in table&hellip; And the code examples are displayed without indents or syntax highlighting.</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/html5_form_input_types.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/html5_form_input_types.asp</a>.
<p>The support for <code>type=color</code> and <code>type=search</code> is wrong for Opera, those were added in version 11.</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_elements.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_elements.asp</a>.
<blockquote>
Even if <code>&lt;br&gt;</code> works in all browsers, writing <code>&lt;br /&gt;</code> instead is more future proof.
</blockquote>
<p>
Bullshit. I wouldn't expect them to know how the html parser works, but don't advocate so blindly.<br>also, &lt;br /&gt; isn't semantic, so just don't use it<sup><a href="#cmnt16" id="cmnt_ref16">[p]</a></sup>.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/tag_input.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/tag_input.asp</a>.
<p>
XHTML syntax in example. Do we want that in HTML5 examples?
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_styles.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_styles.asp</a>.
<p>
Advocates using inline styles like crazy, saying that they are the recommended way to style things. true compared to
<code>&lt;font&gt;</code>; not true in general.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_links.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_links.asp</a>.
<p>
Uses the deprecated named anchor (name attribute) instead of element id. Yes. you can link to any element with a <code>href="#thing"</code> as long as it has <code>id="thing"</code>. Yes, it works everywhere. OMG.
</p>
</li>
<li>
<a href="http://www.w3schools.com/tags/tag_font_style.asp" rel="nofollow" class="w3s-link">www.w3schools.com/tags/tag_font_style.asp</a>.
<p>
<code>&lt;b&gt;</code>, <code>&lt;i&gt;</code>, <code>&lt;small&gt;</code> and <code>&lt;big&gt;</code> tags are mentioned as ways
to format text. Not exactly wrong I guess, but could be better. So, sorta awful for a school :/
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_tables.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_tables.asp</a>.
<p>
Pages ago they recommended to use CSS, but suddenly they are back to using ancient attributes to set border width. they also claim:
</p>
<blockquote>
The text in a <code>th</code> element will be bold and centered.
</blockquote>
<p>
Which it does not even do on their site, this also depends on the browsers default stylesheet.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_forms.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_forms.asp</a>.
<p>
Non-block-level elements directly inside form tag is not valid (until html5).
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_frames.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_frames.asp</a>.
<p>
nuff said.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_colors.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_colors.asp</a>,
<a href="http://www.w3schools.com/html/html_colornames.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_colornames.asp</a>,
<a href="http://www.w3schools.com/html/html_colorvalues.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_colorvalues.asp</a>
<p>
This is all CSS stuff at this point. Why is it in the HTML section?
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_whyusehtml4.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_whyusehtml4.asp</a>.
<p>
OH MY GOD, A FUCKING DOCTYPE!!!
</p>
</li>
<li>
<a href="http://w3schools.com/html/html_head.asp" rel="nofollow" class="w3s-link">http://w3schools.com/html/html_head.asp</a>.
<p>
Their minimum document example keeps changing. Suddenly it has a <code>&lt;head&gt;</code> and <code>&lt;title&gt;</code> here.
Before it had only <code>&lt;html&gt;</code> and <code>&lt;body&gt;</code>.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_url.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_url.asp</a>.
<p>
O noes! "hackers" can "see" stuff! also, since when are gopher, wais, and news "common" schemes?
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_urlencode.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_urlencode.asp</a>.
<p>
URL encodings are not ISO-8859-1; they can be whatever you want.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html/html_webserver.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html/html_webserver.asp</a>.
<p>
IIS or PWS? are you kidding me? How about XAMPP *at least*? And how irresponsible is it to tell people how to create a web
server for themselves like this as part of the HTML tutorial?
</p>
</li>
<li>
<a href="http://w3schools.com/html5/html5_video.asp" rel="nofollow" class="w3s-link">http://w3schools.com/html5/html5_video.asp</a>.
<blockquote>
"Currently, there are 2 supported video formats for the video element: &hellip; Ogg .. MPEG 4
</blockquote>
<p>There are 3 main formats: also VP8 (WebM) + other secondary ones, e.g.: Safari also supports all formats supported by QuickTime or Core Video on OS X
<blockquote>
All <code>&lt;video&gt;</code> Attributes
</blockquote>
<p>This list is incomplete; even the <code>poster</code> attribute is missing.</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/html5_audio.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/html5_audio.asp</a>,
<a href="http://www.w3schools.com/html5/html5_video.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/html5_video.asp</a>.
<p>
Controls attribute are an boolean attribute. If attribute is present it similar to true, it its not present its similar
to false. So its not <code>&lt;audio controls="controls"&gt;</code>, its just <code>&lt;audio controls&gt;</code>
<sup><a href="#cmnt17" id="cmnt_ref17">[q]</a></sup>.
</p>
<p>
There is no reference to JavaScript APIs those elements have.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/default.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/default.asp</a>.
<p>
States:
</p>
<blockquote>
At W3Schools you will find complete references about tags, standard attributes, standard events, and more.
</blockquote>
<p>
This is not true. A lot of attributes, standard events and more are missing.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/tag_meta.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/tag_meta.asp</a>
<p>
It sets the charset to ISO-8859-1. By now, UTF-8 should be what developers should use.
</p>
</li>
<li>
<a href="http://www.w3schools.com/html5/tag_details.asp" rel="nofollow" class="w3s-link">www.w3schools.com/html5/tag_details.asp</a>
<p>
The docs on the HTML5 <code>&lt;details&gt;</code> element is written to make it sound like its a document-level metadata
tag, when in fact its meant to hide and show further details of inline content. The page isn't written very well.
</p>
</li>
<li>
<a href="http://www.w3schools.com/tags/tag_hn.asp" rel="nofollow" class="w3s-link">www.w3schools.com/tags/tag_hn.asp</a>.
<p>
States:
</p>
<blockquote>
<code>&lt;h1&gt;</code> defines the largest heading and <code>&lt;h6&gt;</code> defines the smallest heading.
</blockquote>
<p>
This is not true. The heading elements' number defines their rank for their importance on the page.
</p>
</li>
</ul>
</li>
<li id="csssucks">
<h3>CSS</h3>
<ul>
<li>
<a href="http://www.w3schools.com/css/pr_pseudo_after.asp" rel="nofollow" class="w3s-link">www.w3schools.com/css/pr_pseudo_after.asp</a>.
<p>
WTF. Play a sound after each occurrence of an <code>H1</code> element&hellip; HUH? This almost seems like a joke
<sup><a href="#cmnt9" id="cmnt_ref9">[i]</a></sup>. It seems like an insult.
</p>
</li>
<li>
<a href="http://www.w3schools.com/css3/css3_pr_target.asp" rel="nofollow" class="w3s-link">www.w3schools.com/css3/css3_pr_target.asp</a>.
<p>CSS target property? UMM&hellip; I guess you mean <a href="http://www.w3.org/TR/css3-hyperlinks/">this deprecated spec</a> from 2004 with zero browser support? Awesome.</p>
</li>
<li>
<a href="http://www.w3schools.com/css/css_dont.asp" rel="nofollow" class="w3s-link">www.w3schools.com/css/css_dont.asp</a>.
<p>Briefly saying that htc-scripts should be avoided is nice, but having two large examples, one of which addresses a <i>common</i> problem and a another for a <i>popular</i> feature is advocating otherwise.</p>
</li>
<li>
<a href="http://www.w3schools.com/css/pr_class_display.asp" rel="nofollow" class="w3s-link">www.w3schools.com/css/pr_class_display.asp</a>.
<blockquote>
No versions of Internet Explorer (including IE8) support the property values <code>inline-table</code>, <code>run-in</code>,
<code>table</code>, <code>table-caption</code>, <code>table-cell</code>, <code>table-column</code>, <code>table-column-group</code>,
<code>table-row</code>, or <code>table-row-group</code>.
</blockquote>
<p>This is bullshit; IE8 supports all of these.</p>
</li>
<li>
<a href="http://www.w3schools.com/css3/css3_2dtransforms.asp" rel="nofollow" class="w3s-link">www.w3schools.com/css3/css3_2dtransforms.asp</a>.
<p>Listing <code>skewX</code> and <code>skewY</code> but forgetting about <code>translateX</code>, <code>translateY</code>, <code>scaleX</code> and <code>scaleY</code>..</p>
</li>
<li>
<a href="http://www.w3schools.com/css3/css3_fonts.asp" rel="nofollow" class="w3s-link">www.w3schools.com/css3/css3_fonts.asp</a>.
<p>
Oh and there I thought Microsoft invented the <code>@font-face</code> at-rule! My bad! There's no such thing as the
<code>url</code> descriptor for font-face rules either.
</p>
</li>
</ul>
</li>
<li id="jssucks">
<h3>JavaScript</h3>
<ul>
<li>
<a href="http://www.w3schools.com/js/js_timing.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_timing.asp</a>.
<p>
This is a bullshit page. You <strong>never</strong> pass a string to <code>setTimeout()</code> unless you like using
<code>eval()</code>. Doing this also means you can't use any variables from your local scope. Also, the examples on this page
has a ton of global variables. Bad.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_browser.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_browser.asp</a>.
<p>
Also abysmal. <code>document.write()</code> has a tendency to trash a page and is one of the poorest ways possible to add content. It
also means that you can't defer/asynchronously load a script and your DOM loading is delayed because the browser has to wait
for your <code>document.write()</code>. Oh, and by the way, user-agent sniffing is a <em>very</em> bad thing, because is easily <a href="http://webaim.org/blog/user-agent-string-history/">spoofable</a>. So is sniffing just
about any parts of the <code>window.navigator</code> object.
</p>
</li>
<li>
<a href="http://www.w3schools.com/jsref/met_win_setinterval.asp" rel="nofollow" class="w3s-link">www.w3schools.com/jsref/met_win_setinterval.asp</a>.
<p>
No warning about what happens when the callback takes longer than the given interval.
</p>
</li>
<li>
<a href="http://www.w3schools.com/jsref/jsref_eval.asp" rel="nofollow" class="w3s-link">www.w3schools.com/jsref/jsref_eval.asp</a>.
<blockquote>
First, <code>eval()</code> determines if the argument is a valid string, then <code>eval()</code> parses the string looking
for JavaScript code. If it finds any JavaScript code, it will be executed.
</blockquote>
<p>LOLWAT? This is ridiculous! <code>eval()</code> certainly does not parse a string to determine whether or not it's JavaScript.</p>
</li>
<li>
<a href="http://www.w3schools.com/JS/js_statements.asp" rel="nofollow" class="w3s-link">www.w3schools.com/JS/js_statements.asp</a>.
<blockquote>
JavaScript code (or just JavaScript) is a sequence of JavaScript statements. Each statement is executed by the browser in the
sequence they are written.
</blockquote>
<p>
Apparently <em>declarations</em> and <em>expressions</em> can go right to hell (since JavaScript only is a sequence of statements),
and the second part about "each statement is executed by the browser in the sequence they are written" is just plain wrong. See also: hoisting.
</p>
<blockquote>
JavaScript Blocks
</blockquote>
<p>
Nothing about JavaScript not having block scope even though its block syntax suggests that it does.
</p>
<blockquote>
The example above is not very useful.
</blockquote>
<p> lol </p>
</li>
<li>
<a href="http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax2" rel="nofollow" class="w3s-link">www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax2</a>.
<p><code>async: false</code>, come on! ASYNCHRONOUS COADS ARE HARD :(</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_functions.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_functions.asp</a>.
<blockquote>
If you declare a variable within a function, the variable can only be accessed within that function. When you exit the
function, the variable is destroyed.
</blockquote>
<p>
The whole concept of closures doesn't exist at w3schools&hellip; Also, they never go over the difference between a function
declaration and a function expression. I know this is for beginners, but they could at least put it in the advanced section, or make
it apparent that functions are first-class?
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_objects.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_objects.asp</a>.
<p>
Unnecessary use of <code>new Object()</code> instead of object literal <code>{}</code> on "creating your own objects".
Bad naming used for object constructors, they call it "template of an object". They don't explain that calling the
constructor using <code>new</code> will return a new object - sounds like a job for Captain Obvious.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_obj_boolean.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_obj_boolean.asp</a>.
<p>
<code>new Boolean()</code> is completely useless. Use straight up <code>true</code> and <code>false</code>. Save bytes, improve performance, and prevent all sorts of WTF when you start <code>typeof</code> or <code>==</code>'ing things.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_loop_for.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_loop_for.asp</a>.
<blockquote>
for (var=startvalue;var&lt;=endvalue;var=var+increment)
</blockquote>
<p>
Not only do they forget about using the <code>var</code> keyword to prevent the variable from leaking to the global scope, but
also they use <code>var</code> as a variable name, which is forbidden. <sup><a href="#cmnt10" id="cmnt_ref10">[j]</a></sup>
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_summary.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_summary.asp</a>.
<p>
Saying that "now you know JavaScript" (after reading many wrong info) and recommending ASP as the next step. ASP! Yeah. That shit from 2000! Not to mention that
DHTML is referenced as another possible next step! Hum dur.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_obj_intro.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_obj_intro.asp</a>.
<blockquote>
JavaScript is an Object Oriented Programming (OOP) language. An OOP language allows you to define your own objects and make
your own variable types.
</blockquote>
<p>This is just terribly wrong in each part.</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_loop_for_in.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_loop_for_in.asp</a>.
<p>
Advocates the use of for-in loops for arrays, and makes no mention of
problems and <code>obj.hasOwnProperty()</code>. Also, the note about the variable argument sounds like it's half-BS to me.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_whereto.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_whereto.asp</a>.
<blockquote>
Scripts in <code>&lt;head&gt;</code>
</blockquote>
<p>In older browsers, placing scripts in the <code>&lt;head&gt;</code> has a negative impact on page performance.
Until the script is done loading: 1) resources below the script are blocked from downloading 2) elements below the script are blocked from rendering. So try to put scripts at the bottom of the page, when possible.
</p>
<blockquote>
If you don't want your script to be placed inside a function, or if your script should write page content, it should be
placed in the body section.
</blockquote>
<p>Whaaat?</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_popup.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_popup.asp</a>.
<p>
<code>alert()</code> and <code>confirm()</code> dialogs with no explanation that they should generally be avoided. Also no
discussion of <code>console.log()</code> for debugging purposes. Please god, can we put a nail in the coffin of alert debugging already?
</p>
</li>
<li>
<a href="http://www.w3schools.com/jsref/jsref_regexp_compile.asp" rel="nofollow" class="w3s-link">www.w3schools.com/jsref/jsref_regexp_compile.asp</a>.
<p>DEPRECATED SINCE FOREVER AGO. WHY IS THIS LISTED?!</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_intro.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_intro.asp</a>.
<blockquote>
JavaScript's official name is ECMAScript.
</blockquote>
<p>
Technically&hellip; JavaScript is a trademark originally registered by Sun Microsystems and licensed to Netscape when the language
was new. Sun was acquired by Oracle, which now owns the trademark, and Netscape passed the license for the trademark on to Mozilla.
The language was eventually standardized under the creative name ECMAScript by the EMCA international standards organization to
avoid legal conflicts with the trademark owner. Similarly, Microsoft named its clone of JavaScript, JScript. Meanwhile, JavaScriptCore,
the implementation of ECMAScript in Apple's Safari, appears to be willing to take the chance, and Google's v8 is off
doing its own thing being awesome and breaking the mold, man.
</p>
<p>To put it&hellip; plainly, JavaScript is a subset (or superset, depending upon which version of JS you are describing) of ECMAScript. :)</p>
</li>
<li>
<a href="http://www.w3schools.com/jsref/jsref_obj_regexp.asp" rel="nofollow" class="w3s-link">www.w3schools.com/jsref/jsref_obj_regexp.asp</a>.
<blockquote>
<code>var txt=/pattern/modifiers;</code>
</blockquote>
<p>
Assigning an <code>RegExp</code> object to a variable named <code>txt</code> is quite confusing. Also, weren't octals removed for
escape sequences in ES5? Also also, no mention of non-capturing submatches.
</p>
</li>
<li>
<a href="http://www.w3schools.com/JS/js_obj_array.asp" rel="nofollow" class="w3s-link">www.w3schools.com/JS/js_obj_array.asp</a>.
<p>
It lists <code>new Array()</code> as the way to create an array. The problem is that this is the old, slower way.
<sup><a href="#cmnt13" id="cmnt_ref13">[m]</a></sup>. The new way, <code>[]</code> is shorter and it makes you look cool.
<sup><a href="#cmnt14" id="cmnt_ref14">[n]</a></sup>
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_form_validation.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_form_validation.asp</a>.
<p>
Use of generally discouraged <code>with()</code>, use of global variables, use of JavaScript in HTML attribute
(<code>onsubmit=""</code>) etc. Very last century. Also, the <code>if()</code> could be simplified to simply <code>if (!value)</code> - in
its current form, it's likely to perpetuate some of the misunderstandings people tend to have about JavaScript.
</p>
</li>
<li>
<a href="http://www.w3schools.com/jsref/dom_obj_event.asp" rel="nofollow" class="w3s-link">www.w3schools.com/jsref/dom_obj_event.asp</a>
<p>
Doesn't mention the essential <code>event.preventDefault()</code> and <code>event.stopPropagation()</code>.
</p>
</li>
<li>
<a href="http://www.w3schools.com/JS/js_howto.asp" rel="nofollow" class="w3s-link">www.w3schools.com/JS/js_howto.asp</a>
<blockquote>
The <code>document.write()</code> command is a standard JavaScript command for writing output to a page.
</blockquote>
<p>
This is on the second section and they never explain the danger of using <code>document.write()</code>
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_obj_date.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_obj_date.asp</a>
<blockquote>
Use <code>getTime()</code> to calculate the years since 1970
</blockquote>
<p>
UM, NO? Wrong? Very wrong?! Yes, it is wrong. Not &quot;years&quot; but &quot;milliseconds&quot;.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_image_maps.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_image_maps.asp</a>
<p>
What in the world does this have to do with JavaScript?
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_animation.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_animation.asp</a>
<p>
This is not animation<sup><a href="#cmnt15" id="cmnt_ref15">[o]</a></sup>. This is not even something that you should be using JS for. Ever.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/tryit.asp?filename=tryjs_animation" rel="nofollow" class="w3s-link">www.w3schools.com/js/tryit.asp?filename=tryjs_animation</a>.
<p>
Bad "animation" example. Whole example could be done in CSS.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_variables.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_variables.asp</a>
<p>
Claims that <code>x = &hellip;</code> and <code>var x = &hellip;</code> are the "same". They are obviously not
(<a href="http://goo.gl/rXrY7">http://goo.gl/rXrY7</a>). On that note, W3C doesn't mention variable scoping at all&hellip;
</p>
<p>
This page is even worse, it actually goes out of its way to demonstrate that redeclaring an already-declared variable is safe.
People shouldn't be doing this! You shouldn't be mentioning it like it's OK!
</p>
</li>
<li>
<a href="http://www.w3schools.com/ajax/ajax_xmlhttprequest_create.asp" rel="nofollow" class="w3s-link">www.w3schools.com/ajax/ajax_xmlhttprequest_create.asp</a>
<p>
Beginners would probably copy and paste the code which lacks <code>var</code> statements and would add evil globals.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_events.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_events.asp</a>
<p>
Encouraging the use of inline event handlers. Also no mention of event bubbling or <code>event.stopPropagation()</code>.
The wise bot from #jquery once said:
</p>
<blockquote>
Inline handlers are harder to debug, aren't reusable, are harder to maintain, bloat your HTML, and violate the
separation of content design principle. Also - jQuery can't normalize your event, leaving you unsure if you can
reliably <code>event.stopPropagation()</code>, or access <code>event.which</code>.
</blockquote>
<p>
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_special_characters.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_special_characters.asp</a>
<p>
That's weird, I am *pretty* sure that ampersands are not characters that need to be
escaped<sup><a href="#cmnt24" id="cmnt_ref24">[x]</a></sup> in JS strings, but maybe I have been doing it wrong this
whole time!?!? Maybe they meant that it is an HTML special character, so using it in JS blocks inside the HTML document
can cause problems<sup><a href="#cmnt25" id="cmnt_ref25">[y]</a></sup>.
</p>
</li>
<li>
<a href="http://www.w3schools.com/js/js_throw.asp" rel="nofollow" class="w3s-link">www.w3schools.com/js/js_throw.asp</a>
<p>
<code>throw</code> is not a function, it is a language construct, so why does their example treat it like one? :(
</p>
</li>
</ul>
</li>
<li id="othersucks">
<h3>Others</h3>
<ul>
<li>
<a href="http://www.w3schools.com/wap/default.asp" rel="nofollow" class="w3s-link">www.w3schools.com/wap/default.asp</a>.
<blockquote>
WML is the language used to create pages for WAP browsers. This tutorial will teach you how to convert HTML pages to pocket
format, so that the information can be accessed from wireless clients, like mobile phones.
</blockquote>
<p>
It's like 2003 never happened, let alone 2007. Also probably the last remaining references to WMLScript on the entire interweb.
Oh, and why is mobile web stuff classified under "Web Services"?
</p>
</li>
<li>
<a href="http://www.w3schools.com/tcpip/tcpip_addressing.asp" rel="nofollow" class="w3s-link">www.w3schools.com/tcpip/tcpip_addressing.asp</a>.
<blockquote>
TCP/IP uses 4 computer bytes
</blockquote>
<p>
Unlike the other sort of bytes? Furthermore, addressing has nothing to do with TCP. It happens on the OSI network layer; this
information is very specific to IPv4 and is going to be increasingly obsolete as time goes on. <!-- http://twitter.com/#!/ipv4countdown -->
</p>
</li>
<li>
<a href="http://www.w3schools.com/svg/svg_inhtml.asp" rel="nofollow" class="w3s-link">www.w3schools.com/svg/svg_inhtml.asp</a>.
<p>
I wish&hellip; This page would be updated to show an example of SVG in HTML5.
</p>
</li>
<li>
<a href="http://www.w3schools.com/svg/svg_examples.asp" rel="nofollow" class="w3s-link">www.w3schools.com/svg/svg_examples.asp</a>.
<p>
It's bad advice to suggest using the Adobe SVG Viewer for browser that don't support SVG. It's unmaintained and I think it
doesn't even work on Windows 7. Better is to suggest the use of SVGWeb. As for the examples linked to from that page, there's
no good reason to refer to the SVG DTD. Who knows why that have <code>standalone="no"</code> in the XML declaration when the document
has no external references. Putting <code>version="1.1"</code> on the root is kinda useless too.
</p>
</li>
<li>
<a href="http://www.w3schools.com/svg/svg_filters_intro.asp" rel="nofollow" class="w3s-link">www.w3schools.com/svg/svg_filters_intro.asp</a>.
<p>
What an exceptionally useful page&hellip; The "tip" that you can use multiple filters on an element is kind of misleading, if you
happened to know how to write filters (because that list of elements sure doesn't help you): an element can have only one filter,
but that filter might use multiple filter primitives to define its effect. The three lighting elements <code>feDistantLight</code>,
<code>fePointLight</code> and <code>feSpotLight</code> aren't even filters primitives -- they're just helper elements for the two
lighting primitives <code>feDiffuseLighting</code> and <code>feSpecularLighting</code>.
</p>
</li>
<li>
<a href="http://www.w3schools.com/svg/svg_filters_gaussian.asp" rel="nofollow" class="w3s-link">www.w3schools.com/svg/svg_filters_gaussian.asp</a>.
<p>
The sentence talking about the id attribute on the <code>&lt;filter&gt;</code> is confused. <code>&lt;filter&gt;</code> need not be nested
in a <code>&lt;defs&gt;</code>. The description of <code>&lt;defs&gt;</code> is pretty weak.
</p>
</li>
<li>
<a href="http://www.w3schools.com/svg/svg_grad_linear.asp" rel="nofollow" class="w3s-link">www.w3schools.com/svg/svg_grad_linear.asp</a>.
<p>
Again, there's no requirement for gradients to be defined within a <code>&lt;defs&gt;</code>.
</p>
</li>
<li>
<a href="http://www.w3schools.com/vbscript/vbscript_intro.asp" rel="nofollow" class="w3s-link">www.w3schools.com/vbscript/vbscript_intro.asp</a>
<p>
They teach VBScript and state:
</p>
<blockquote>
When a VBScript is inserted into an HTML document, the Internet browser will read the HTML and interpret the VBScript.
</blockquote>
<p>
It implies it will work in all browsers. The doc says nothing about VB being a proprietary language.
</p>
</li>
<li>
<a href="http://w3schools.com/php/php_mysql_insert.asp" rel="nofollow" class="w3s-link">www.w3schools.com/php/php_mysql_insert.asp</a>
<p>
I imagine there are over 9000 errors in their PHP stuff, but I knew I would find this very easily if I looked.
WHAT'S UP TRIVIAL SQL INJECTION EXAMPLE? NICE TO SEE YOU.
</p>
</li>
<li>
<a href="http://www.w3schools.com/" rel="nofollow" class="w3s-link">http://www.w3schools.com/</a>
<p>
no links to the specs, ever. :(
</p>
</li>
</ul>
</li>
</ul>
</section>
<section class="sucks quiz clearfix">
<h2>Quizzes</h2>
<p>I like quizzes. You like quizzes? It'd be fun to take quizzes! It'd be more fun if the correct answers were correct&hellip;</p>
<nav><a href="#htmlquiz">HTML</a><a href="#xhtmlquiz">XHTML</a><a href="#cssquiz">CSS</a><a href="#jsquiz">JavaScript</a><a href="#jqquiz">jQuery</a></nav>
<ul>
<li id="htmlquiz">
<!-- HTML Quiz Grievances -->
<!-- Mind that the quiz applies to HTML4, not HTML5 -->
<h3>HTML</h3>
<p><a href="http://w3schools.com/quiztest/quiztest.asp?qtest=HTML" rel="nofollow" class="w3s-link">www.w3schools.com/quiztest/quiztest.asp?qtest=HTML</a></p>
<ul>
<li>
<p>
<span>Question 1</span> WHO CARES<sup><a href="#cmnt18" id="cmnt_ref18">[r]</a></sup> WHAT IT STANDS FOR? HOW DOES THAT HELP YOU USE HTML?
</p>
</li>
<li>
<p>
<span>Question 4</span> Actually, correct HTML is &lt;br&gt;, correct XHTML is &lt;br /&gt;
</p>
</li>
<li>
<p>
<span>Question 5</span> Well, "correct" is probably the wrong word here. Would prefer to suggest CSS answer.
</p>
</li>
<li>
<p>
<span>Question 6</span> Bold? B? Really!?
</p>
</li>
<li>
<p>
<span>Question 7</span> Italic? I? Really!?
</p>
</li>
<li>
<p>
<span>Question 10</span> In strict doctypes, target attribute is bad.
</p>
</li>
<li>
<p>
<span>Question 11</span> "All" table tags? What about all the other ones?
</p>
</li>
<li>
<p>
<span>Question 12</span> "correct" answer is to use an align attribute after explicitly telling people not to use it earlier in their html section
</p>
</li>
<li>
<p>
<span>Question 15</span> Actually, correct HTML is &lt;input type="checkbox"gt;, correct XHTML is &lt;input type="checkbox" /&gt;
</p>
</li>
<li>
<p>
<span>Question 19</span> Missing <code>alt</code> attribute.
</p>
</li>
<li>
<p>
<span>Question 20</span> same thing as q12, advocates using background attribute of <code>&lt;body&gt;</code>
</p>
</li>
</ul>
</li>
<li id="xhtmlquiz">
<!-- XHTML Quiz Grievances -->
<h3>XHTML</h3>
<p><a href="http://www.w3schools.com/quiztest/quiztest.asp?qtest=XHTML" rel="nofollow" class="w3s-link">www.w3schools.com/quiztest/quiztest.asp?qtest=XHTML</a></p>
<ul>
<li>
<p>
<span>Question 1</span> Same as HTML quiz
</p>
</li>
<li>
<p>
<span>Question 14</span> Presumably the examples that do not use the lang attribute are not using the lang attribute correctly.
</p>
</li>
<li>
<p>
<span>Question 18</span> What are the XHTML doctypes? WHO CARES?
</p>
</li>
<li>
<p>
<span>Question 19</span> Which is the most common XHTML doctype? WHO FUCKING CARES?
</p>
</li>
</ul>
</li>
<li id="cssquiz">
<!-- CSS Quiz Grievances -->
<h3>CSS</h3>
<p><a href="http://www.w3schools.com/quiztest/quiztest.asp?qtest=CSS" rel="nofollow" class="w3s-link">www.w3schools.com/quiztest/quiztest.asp?qtest=CSS</a></p>
<ul>
<li>
<p>
The entire quiz is useless. Questions range from basic usage of properties to simple syntax.
</p>
</li>
<li>
<p>
<span>Question 12/16</span> Both questions ask nearly the same question about how bolding text works
</p>
</li>
</ul>
</li>
<li id="jsquiz">
<!-- JavaScript Quiz Grievances -->
<h3>JavaScript</h3>
<p><a href="http://www.w3schools.com/quiztest/quiztest.asp?qtest=JavaScript" rel="nofollow" class="w3s-link">www.w3schools.com/quiztest/quiztest.asp?qtest=JavaScript</a></p>
<ul>
<li>
<p>
<span>Question 2</span> Not mentioning <code>document.createElement()</code> or <code>innerHTML</code> as correct syntax to
write "hello world". <code>document.write()</code> is always the wrong answer, except in one case, which this is not.
</p>
</li>
<li>
<p>
<span>Question 3</span> Advertising script placements in the head tags are correct.. Why?
</p>
</li>
<li>
<p>
<span>Question 7</span> Missing <code>var name = function(){};</code>, anonymous functions and closures
</p>
</li>
<li>
<p>
<span>Question 9/10</span> Using <code>==</code> instead of <code>===</code> <sup><a href="#cmnt19" id="cmnt_ref19">[s]</a></sup>
</p>
</li>
<li>
<p>
<span>Question 13/14</span> Glad we spent two whole questions going over the ways that one can comment text in JS.
I can rest easy knowing that my JS devs will be able to write multi-line comments now. <sup><a href="#cmnt20" id="cmnt_ref20">[t]</a></sup>
</p>
</li>
<li>
<p>
<span>Question 15</span> using <code>new Array()</code> instead of <code>[]</code>
</p>
</li>
<li>
<p>
<span>Question 18</span> Pop-up windows? Really? Let's not talk about how falsy values work, let's ask how to open a WINDOW<sup><a href="#cmnt21" id="cmnt_ref21">[u]</a></sup>
</p>
</li>
<li>
<p>
<span>Question 19</span> Not technically wrong, but a lot of browsers don't let you change the status text or don't have a status bar, so setting <code>window.status</code> has no effect anyway.
</p>
</li>
<li>
<p>
<span>Question 20</span> using <code>navigator.appName</code> doesn't work cross browser&hellip; For example it gives navigator in Google Chrome, and is also worthless<sup><a href="#cmnt22" id="cmnt_ref22">[v]</a></sup> thing to ask anyway
</p>
</li>
</ul>
</li>
<li id="jqquiz">
<!-- jQuery Quiz Grievances -->
<h3>jQuery</h3>
<p><a href="http://www.w3schools.com/quiztest/quiztest.asp?qtest=jQuery" rel="nofollow" class="w3s-link">www.w3schools.com/quiztest/quiztest.asp?qtest=jQuery</a></p>
<ul>
<li>
<p>
<span>Question 2</span> Query used to have XPath selectors, but does not now. WHERE'S THAT OPTION, W3SCHOOLS? The answer is FALSE, but they think the answer is TRUE.
</p>
</li>
<li>
<p>
<span>Question 5</span> jQuery can be used on the client or the server.
</p>
</li>
<li>
<p>
<span>Question 16</span> None of those are jQuery functions
</p>
</li>
<li>
<p>
<span>Question 19</span> That selector is fucking stupid, and none of the answers are correct
</p>
</li>
</ul>
</li>
</ul>
</section>
<section class="content"><h2 id="road-ahead">The Road Ahead</h2>
<ol>
<li>To filter out w3school in your google search, append <code>-w3school</code> to your search.
<li>To get the document from MDC, just append <code>mdc</code> to your google search query.
<li>To help promote proper JS documentation on <em>your</em> site, grab a banner at <a href="http://promotejs.com">promotejs.com</a>.
<li>Spread the word! Send anyone using, sharing or referencing w3schools.com on over to this site. (Hint: blog comments, stackoverflow.com answers, etc.)
</ol>
</section>
<!--
<h3>Off-Topic</h3>
<p>So I'm looking at twitter search for w3schools to see where this link has gone.. but once i scroll past all the tweets referencing it&hellip;. i hit shit like&hellip;</p>
<p>"so impressed with the online web development tutorials out there. my favourite so far is <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGKQuxy7D6Vc9sctyj5HMFjQ9hSKg">http://www.</a><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGKQuxy7D6Vc9sctyj5HMFjQ9hSKg">w3schools</a><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGKQuxy7D6Vc9sctyj5HMFjQ9hSKg">.com/</a>"</p>
<p>"Also, you can't beat w3schools"</p>
<p>"@<a href="http://www.google.com/url?q=http%3A%2F%2Ftwitter.com%2F_lokeshmotwani&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGNVeBfQETr7MI5cZkwMtCAutIFYg">_lokeshmotwani</a> Then u r ready for iOS development and PHP. For web development first learn html and css from w3schools"</p>
<p>"@<a href="http://www.google.com/url?q=http%3A%2F%2Ftwitter.com%2Fheyjudeonline&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGfl9POsitgxQSGKjzZljGlXfWirA">heyjudeonline</a> The best place to start:<a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE8r-GNmViUYBs7oTTd6kuOwufAcg">http://www.</a><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE8r-GNmViUYBs7oTTd6kuOwufAcg">w3schools</a><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE8r-GNmViUYBs7oTTd6kuOwufAcg">.com/css/default.asp</a>"</p>
<p>:'(</p>
<p>but then&hellip;</p>
<p>"@<a href="http://www.google.com/url?q=http%3A%2F%2Ftwitter.com%2FmLewisLogic&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGnP4hks6vogowMwlocf4xxAEFOGQ">mLewisLogic</a> Whenever you find w3schools (which is utter crap), just add 'mdc' to your query." &nbsp;HOORAY <a href="http://www.google.com/url?q=https%3A%2F%2Ftwitter.com%2F%23!%2Fsamuelclay&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH9ub9y6DAPQYkGY_XHJumpdk29GA">SIR</a>!</p>
<p>We need a Twitter bot to watch those and suggest MDC, etc. (Can a bot watch links too? I mean shortened ones? such that we can detect people passing wrong advice to each other?)</p>
<p>And a Google alert on w3schools to let a task force? go and comment to any 'comment-able' place where w3schools is praised.</p>
<p>Will make said bot this weekend&hellip;<sup><a href="#cmnt30" id="cmnt_ref30">[ad]</a></sup></p>
<p> &nbsp;^^ awesome. ~paul</p>
<p>Their logo kinda looks like a cock and balls. there, I said it.</p>
<p>Apparently nobody bought adwords on w3schools, I wonder if we can just advertise MDC when somebody searches for w3schools.</p>
<p>I would love if we could make a good informative article on w3schools (other dangerous &amp; outdated places) and have it published in A List Apart. </p>
<p> ^ go right ahead. you got a lot here to get you started. ~paul</p>
<p>Can we add a kind of "note," suggestion to be displayed by Firebug when someone has a another tab (than the one he's working on some content) opened on w3school, and suggest a proper place? Something simple, discreet (no MS Clippie) &hellip; "you might be using outdated and misleading documentation, here's where to find&hellip;"</p>
<p>OTOH can we get things like this in any other web dev tools they might use?</p>
<p>Are the forums at <a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.invisionzone.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFWRsL_jxsLAzITuNWI3BLJ1pllsQ">http://w3schools.invisionzone.com/</a> as bad as the site's original content?</p>
<p>Should one "join" the forums and advocate better places for documentation? ~trygve</p>
<div><p><a href="#cmnt_ref1" id="cmnt1">[a]</a>What I don't understand is why market forces haven't kicked in here &nbsp;&mdash;jamesgpearce</p>
<hr><p>s'not so much market forces as SEO power. and they've beaten specs and the MDC for that.. </p>
<p>i talked with the W3C about and and they're like.. "We should have a page for every html element." Which.. would indeed help a lot. &mdash;paulirish</p>
<hr><hr><p>I have a feeling it's because it may have been "first" on google, people link to it more and it gets higher. &nbsp;&mdash;antimatter15</p>
<hr><p>Now if only we knew someone who worked at Google&hellip; &mdash;jamesgpearce</p>
<hr><p>Heh. I wish I could simultaneously drop w3schools, kill off the SO clones, and fix all the relevance problems people have had lately.. but alas. &mdash;paulirish</p>
<p>+1</p>
<p>+100 -- bradneuberg</p>
</div><div><p><a href="#cmnt_ref2" id="cmnt2">[b]</a>w3school looks like it was written in 1997; it's just plain fugly and covered with Google AdSense spam widgets. &mdash;bradneuberg</p>
<hr><p>amen. &mdash;paulirish</p>
<hr><p>on web.archive.org, the w3schools from 2000 has the *exact* same content with less ads :) &mdash;antimatter15</p>
</div><div><p><a href="#cmnt_ref3" id="cmnt3">[c]</a>Just as important (maybe), they present incomplete concepts. Some of the transgressions we've listed might be didactically useful, but w3schools should be explicit in saying to never use them in practice and WHY. As it is now, w3schools is less of a school and more of a collection of shitty code samples and bad practices. &mdash;brianloveswords</p>
<hr><p>It's hard to know if something is complete - no sites contain complete info about the topic &mdash;scrptn</p>
<hr><p>That's true, but this is woefully bad. Really, really bad. And as far as no site having complete knowledge, that's what we're here to fix, right? &mdash;brianloveswords</p>
<hr><p>I'd better kill w3schools then fix it ;) &mdash;scrptn</p>
<hr><p>Oh I don't mean fix w3schools, it's gangrene at this point. It needs to come off. I mean we're fixing js documentation in general. &mdash;brianloveswords</p>
<hr><p>Not really &nbsp;;) I'm happy w/ documentation I have (not from w3schools) &mdash;scrptn</p>
</div><div><p><a href="#cmnt_ref4" id="cmnt4">[d]</a>Or place rel="vote-against" onto links &mdash;scrptn</p>
</div><div><p><a href="#cmnt_ref5" id="cmnt5">[e]</a>See Paul's comment up top re: the W3C and a page for each element--it sort of already exists &mdash;miketaylr</p>
</div><div><p><a href="#cmnt_ref6" id="cmnt6">[f]</a>good idea &mdash;kangax</p>
<hr><p>I concur &mdash;darren.waddell</p>
<hr><p>Screw that; why not just create our own wiki to compete? -- dw</p>
<hr><p><a href="http://www.google.com/url?q=http%3A%2F%2Fgoodluckwiththatdude.com&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH5XTbGBsx08_i56fktp2r1el3Hjg">http://goodluckwiththatdude.com</a> &nbsp;&mdash;paulirish</p>
</div><div><p><a href="#cmnt_ref7" id="cmnt7">[g]</a>The obvious reply to this is that if they allow us to update their content more of us would be willing to refer to their pages when we're writing articles or pointing newbs in the right direction ie MORE traffic. At the moment they're just gliding by. I don't know..I think their motivation to work with us should be keeping the material correct but obv if they get more traffic thats more clicks/money for them. &mdash;addyosmani</p>
<hr><p>Motivation can be simple: better content -&gt; more visitors -&gt; more money. But they're just too lazy &mdash;scrptn</p>
</div><div><p><a href="#cmnt_ref8" id="cmnt8">[h]</a>Indeed it does &mdash;jamesgpearce</p>
</div><div><p><a href="#cmnt_ref9" id="cmnt9">[i]</a>w3schools is trolling the internet. &mdash;brianloveswords</p>
</div><div><p><a href="#cmnt_ref10" id="cmnt10">[j]</a>Technical ly untrue. \u0076\u0061\u0072=1 is valid and would set var=1 &mdash;sephr</p>
<hr><p>don't be a pedant. ;) https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words</p>
<hr><p>not anymore in ES5 [edit: had nothing to do with ES5 but still correct] &mdash;sephr</p>
<hr><p>um, ES5 &sect; 7.6.1.1 contradicts that? var is still not a valid identifier, and how could it suddenly not be?</p>
<hr><p>I don't think \u0076\u0061\u0072 actually counts as "var" in that context &mdash;sephr</p>
<p>^-- It does [does as in I'm right or wrong?] -- as in, \u0076\u0061\u0072 is an invalid identifier ;) [ah ok, what about function::var then? ;)] Mozilla extension? e4x? [yes, but using a namespace from mozilla <a href="">(@mozilla.org/js/function)]</a> ok! [it's sorta the "default" namespace of every property <a href="">x="@mozilla.org/js/function"; document.x::title</a> === document.title; though also an empty namespace works too (x=""), but that won't work for direct variables (x::y as opposed to z.x::y) I think maybe this is a bug; oh, and don't get me started with the weird hacks you can get by combining destructuring assignment in arguments, escape sequences, eval, and the function:: namespace (all together); you can do crazy shit with the context]</p>
<p>[not really an extension when only mozilla implements JS]. See 7.6 where it clearly states that escape sequences should not constitute reserved words if they were to be replaced with their actual values (see <a href="http://www.google.com/url?q=https%3A%2F%2Fgist.github.com%2F770357&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGaqylbLMI_abIazzl9FZoXxt3PFQ">https://gist.github.com/770357</a>). --kangax</p>
<hr><p>no it doesn't, but they are still not using \u0076\u0061\u0072, they are using "var".</p>
<hr><p>alright, shall I remove this comment then? &mdash;sephr</p>
<hr><p>GO FOR IT!!!!!!!!!!!!!!!!!!!! WOOOOO!!!!!!!</p>
<hr><p>comment threads are fun! keep it for the lulz. &mdash;paulirish</p>
</div><div><p><a href="#cmnt_ref11" id="cmnt11">[k]</a>Who said that? Don't mix facts and opinions, please. Also, Node.js is not the different language &mdash;scrptn</p>
<hr><p>Well&hellip;. ASP definitely doesnt belong, that's for sure. :) &mdash;paulirish</p>
<hr><p>I'm not an ASP programmer, but why not? Why is it bad? &mdash;scrptn</p>
<hr><p>Because it has not existed for about&hellip;9 years now. It was replaced by C#/ASP.NET (or VB/ASP.NET for people with no brain) in 2002. Actually the last release of ASP was in 2000. 11 years old!!</p>
<hr><p>I missed that &mdash;scrptn</p>
</div><div><p><a href="#cmnt_ref12" id="cmnt12">[l]</a>Actually, JS is more OOP than Java is, because "everything is an object" - in JS functions are objects, as you know, &mdash;scrptn</p>
<p>Should be more like "JavaScript is a rich, multi-paradigm language."</p>
<p>&ndash;brianloveswords</p>
<hr><p>Yep &mdash;scrptn</p>
</div><div><p><a href="#cmnt_ref13" id="cmnt13">[m]</a>i have to disagree. it feels like a big deal. :(</p>
<p>Well, to be fair it lists all the ways. It just lists the constructor way first and the literal way last, which should probably be reversed.</p>
<p>&ndash;brianloveswords</p>
<hr><p>I feel like they should just not have them listed, but then I guess it would not be a "reference". OH WELL. It's not a very good reference anyway since it does not mention that Array(number) will create an empty array of length number.</p>
<hr><p>Fuck the Array constructor. &mdash;paulirish</p>
<hr><p>I JUST WANTED TO SAY before you deleted it anyway that it does not really "control the length"&mdash;it's not like a Java array where it's bound to a particular length when you do that.</p>
<hr><p>Agreed. :) &mdash;paulirish</p>
<hr><p>Yeah it was a "not a big deal" compared to other massive crap. This one is just a tiny rabbit shit. &nbsp;&mdash;jerem.selier</p>
</div><div><p><a href="#cmnt_ref14" id="cmnt14">[n]</a>Like Chuck Norris &mdash;scrptn</p>
</div><div><p><a href="#cmnt_ref15" id="cmnt15">[o]</a>technically, it is an animation. But&hellip; evil animation &mdash;scrptn</p>
<hr><p>Yeah, it doesn't use nearly enough document.write() &mdash;brianloveswords</p>
</div><div><p><a href="#cmnt_ref16" id="cmnt16">[p]</a>How do non-semantical elements like this can break your semantics? I will use that when it's simple solution, rather than adding more tags and CSS &mdash;scrptn</p>
<hr><p>anon 109 agrees. line breaks are cool if you need them, at least until some of the more advanced text wrapping stuff happens. of course, most people don't need them.</p>
</div><div><p><a href="#cmnt_ref17" id="cmnt17">[q]</a>polyglot html5 says both are valid. still, w3schools is a little confused in general about the difference between HTML, XHTML, and polyglot HTML5.</p>
<hr><p>Mmm&hellip; Your right. But; W3C uses only the attribute name in their own examples. Boils down to what we want to teach. &nbsp;&mdash;trygvelie74</p>
</div><div><p><a href="#cmnt_ref18" id="cmnt18">[r]</a>"Who cares" isnt constructive &mdash;dean</p>
<hr><p>How about, "it is totally worthless knowledge that is completely inappropriate when giving a quiz to someone to test their competence level"? If you are only going to ask 20 questions, this should *not* be one of them.</p>
<hr><p>this isnt about being constructive at the moment. consider it a bit of developer catharsis. &mdash;paulirish</p>
<hr><p>Intro paragraph &amp; tweet are misleading.&mdash;dean</p>
<hr><p>deal with it? &mdash;paulirish</p>
<p>&hellip;done :) &mdash;dean</p>
<hr><p>i can't tell which is more fun, reading this doc, or reading this little side thread. -- getify</p>
<hr><p>its a nice happy treat for a friday evening. :D &mdash;paulirish</p>
<hr><p>^-- this is the reminder that I needed: I should be sleeping. 2:30am local time -tiffany</p>
<hr><p>cathartic, yes&hellip; got to figure out how to fix it tho' &mdash;jamesgpearce</p>
</div><div><p><a href="#cmnt_ref19" id="cmnt19">[s]</a>Using === for numbers is excessive, then new Number(32) === 32 is false :(</p>
<hr><p>why would you ever do new Number(&hellip;)? &mdash;sephr</p>
<hr><p>You never should (unless you learn from w3schools) but using === still has no point. &mdash;antimatter15</p>
<hr><p>strict equality is usually faster and avoids incorrect falsy evaluation.</p>
<hr><p>antimatter15 hasn't read JavaScript: The Good Parts :( I believe the main argument Crockford makes is that strict equality is often what people (particularly coming from backend backgrounds) actually expect, when they use ==</p>
<p>Well, either that or I'm completely misinterpreting the comment too broadly :P</p>
<p>Also, IIRC isn't FF currently the oddball in that strict comparison is slower in it?</p>
<p>--kfranqueiro</p>
</div><div><p><a href="#cmnt_ref20" id="cmnt20">[t]</a>Judging by the frequency with which I see inadequately-commented (or not at all) javascript on github, maybe more people actually need to learn this :P &mdash;kfranqueiro</p>
</div><div><p><a href="#cmnt_ref21" id="cmnt21">[u]</a>Proper ventilation is important! &nbsp;..oh wait &mdash;kfranqueiro</p>
</div><div><p><a href="#cmnt_ref22" id="cmnt22">[v]</a>Not just worthless, we should discourage browser detection whenever possible. (I think someone else hit on this elsewhere) &mdash;kfranqueiro</p>
<hr><p>probly ya &mdash;paulirish</p>
</div><div><p><a href="#cmnt_ref23" id="cmnt23">[w]</a>Primarily, but as paulirish stated above, it's turned into a bitch session about everything that's incorrect or inaccurate in w3schools. There's plenty of CSS and HTML mistakes mentioned. &mdash;ShaneRileyDotInfo</p>
<hr><p>Yeah bro it's totally cool. Load it on. &mdash;paulirish</p>
</div><div><p><a href="#cmnt_ref24" id="cmnt24">[x]</a>Notice they never once use the word "escape" on that page. This is one of the major problems with w3schools beyond all the nitpicky stuff: they actively shield their readers from ideas and concepts that should be central to what they are learning.</p>
<p>&mdash;brianloveswords</p>
</div><div><p><a href="#cmnt_ref25" id="cmnt25">[y]</a>But it can't, because the content of a &lt;script&gt; is CDATA, not PCDATA. The only way to break things once you are in a &lt;script&gt; is to write &lt;/script&gt;.</p>
<hr><p>Unless you use XHTML &mdash;scrptn</p>
<hr><p>In which case you wanna wrap that shit manually. Or, really, just don't include inline script. &lt;script&gt;&lt;![CDATA[ ]]&gt;&lt;/script&gt; Either way, \&amp; is not going to escape your XML. If you need to do that, you need to use &amp;amp;.</p>
<hr><p>You're right. That should be stated explicitly too &mdash;scrptn</p>
</div><div><p><a href="#cmnt_ref26" id="cmnt26">[z]</a>sure. &mdash;paulirish</p>
</div><div><p><a href="#cmnt_ref27" id="cmnt27">[aa]</a>You'd better create that links w/ document.write() ;D &mdash;scrptn</p>
</div><div><p><a href="#cmnt_ref28" id="cmnt28">[ab]</a>I could be wrong, but technically speaking when you render one of their pages and it gets downloaded to your cache, isn't THAT reproducing their content without their written permission? Also, if you look at their site they offer PRINT capabilities for each page. SO..they let you PRINT reproduce shit, but not quote? Isnt that a little contradictory? &mdash;addyosmani</p>
<hr><p>OHSHI-- I just used document.write() - did I steal their code?!?! &mdash;scrptn</p>
<hr><p>Wait, so does this mean that when people copy their code, they're screwed BOTH in the engineering AND the legal sense? Awesome.</p>
<p>--kfranqueiro</p>
</div><div><p><a href="#cmnt_ref29" id="cmnt29">[ac]</a>Parody is protected&hellip; but i dont know if we could call this parody&hellip; :/ &mdash;paulirish</p>
<hr><p>wikipedia says "Examples of fair use include commentary, criticism, news reporting, research, teaching, library archiving and scholarship." A case could be made for scholarship, teaching, criticism and commentary &mdash;antimatter15</p>
<hr><p>\o/ &mdash;paulirish</p>
<hr><p>Similar to an academic thesis, you're not claiming any copyright to the content on w3schools or pretending that you wrote it. Referencing it in this manner comes under fair research/reporting rights. As long as no one pastes huge chunks of their site in here I think you're more than covered -- addyosmani</p>
<hr><p>This is unequivocally fair use guys (unless you are sarah palin). also don't link to wikipedia as a source of authoritative information, sheesh :S http://www.law.cornell.edu/uscode/17/usc_sec_17_00000107----000-.html</p>
</div><div><p><a href="#cmnt_ref30" id="cmnt30">[ad]</a>Put it up on github and let me know when it's going down, I'd love to collaborate on that. &mdash;brianloveswords</p>
<hr><p>Yes! Also this site will go on as <a href="http://www.google.com/url?q=http%3A%2F%2Fgithub.com%2Fpaulirish%2Fw3fools&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE-xI_mjJpLrU3D4WLzJV9jEFRhTg">github.com/paulirish/w3fools</a> on monday. &mdash;paulirish</p>
<hr><p> &mdash;subscriptions</p></div>
-->
</div>
<div id="toc">
<a href="#intervention" accesskey="1">Welcome</a>
<a href="#trouble" accesskey="2">Trouble</a>
<a href="#why-it-matters" accesskey="3">Why</a>
<a href="#what-should-be-done" accesskey="4">What</a>
<a href="#why-w3schools-sucks" accesskey="5">How</a>
<a href="#road-ahead" accesskey="6">Forward</a>
</div>
<footer>
<p>In absolutely <strong>NO WAY</strong> is this site associated with the W3C. Or the W3Schools for that matter, but you probably knew that. ;)</p>
</footer>
</div> <!--! end of #container -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.4.js"%3E%3C/script%3E'))</script>
<script src="js/script.js"></script>
<script src="//platform.twitter.com/anywhere.js?id=QuwcvRKbu78yuCLyPTf14Q&amp;v=1"></script>
<script>
twttr.anywhere(function(T) {
T('#contributors').hovercards();
});
</script>
<script>
var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
(function(d,t){
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s);
})(document,'script');
</script>
</body>
</html>