KEMBAR78
Fundamental JavaScript [In Control 2009] | ZIP
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]
Fundamental JavaScript [In Control 2009]

Editor's Notes

  • #53 As an example of how graceful degradation would look at a website, here’s the “hi-fi” version of my own site. Graceful degradation would assume that my site should look roughly like this in all modern browsers and roughly like this [switch] in older browsers. It’s usable, but isn’t great. We can do better.
  • #54 By contrast, PE would tell me to look at this site from the content-out and work to determine the best way to meet my users’ needs. It’s about your site and its content adapting to users instead of forcing users to get by with the scraps you’ve left them.
  • #55 By contrast, PE would tell me to look at this site from the content-out and work to determine the best way to meet my users’ needs. It’s about your site and its content adapting to users instead of forcing users to get by with the scraps you’ve left them.
  • #56 By contrast, PE would tell me to look at this site from the content-out and work to determine the best way to meet my users’ needs. It’s about your site and its content adapting to users instead of forcing users to get by with the scraps you’ve left them.
  • #57 By contrast, PE would tell me to look at this site from the content-out and work to determine the best way to meet my users’ needs. It’s about your site and its content adapting to users instead of forcing users to get by with the scraps you’ve left them.
  • #59 Developing a website is a lot like waiting tables... * some people drink a lot* some drink very littlewe need to anticipate and meet our customers’ needs in as seemless a way possible. They should never have to ask us for more water. That’s customer service. Taking it a bit further...
  • #60 As a waiter, you’d never throw water in a customer’s face. That would be bad customer service. But websites do it all the time when they don’t build with PE in mind. We’ll touch on an example shortly.
  • #86 You need to wield your power wisely. Let me spin a yarn...
  • #87 DHTML, which arrived in the mid-90s, was awful. How many were doing JavaScript at the time? How many liked it? How many looked @ JavaScript and said “no way”? I don’t blame you, it was spaghetti code. Code forking. Forked ourselves. Truth be told, however, our HTML was spaghetti too.
  • #88 DHTML, which arrived in the mid-90s, was awful. How many were doing JavaScript at the time? How many liked it? How many looked @ JavaScript and said “no way”? I don’t blame you, it was spaghetti code. Code forking. Forked ourselves. Truth be told, however, our HTML was spaghetti too.
  • #89 Things are better now, but we have new challenges. We need to move from thinking about what Javascript can do that’s cool to how it should be used to improve the user experience. [slide] And there’s a balance there that PE helps with maintaining as it does put a focus on content.
  • #90 Things are better now, but we have new challenges. We need to move from thinking about what Javascript can do that’s cool to how it should be used to improve the user experience. [slide] And there’s a balance there that PE helps with maintaining as it does put a focus on content.
  • #91 Things are better now, but we have new challenges. We need to move from thinking about what Javascript can do that’s cool to how it should be used to improve the user experience. [slide] And there’s a balance there that PE helps with maintaining as it does put a focus on content.
  • #93 The reason I got in to JS: solid foundation to build neat stuff on - XHTML & HTTP. Ajax is cool, but we should never lose sight of the fact that these are the two core technologies that drive the web. Without either, websites would cease to be.
  • #94 The reason I got in to JS: solid foundation to build neat stuff on - XHTML & HTTP. Ajax is cool, but we should never lose sight of the fact that these are the two core technologies that drive the web. Without either, websites would cease to be.
  • #95 The reason I got in to JS: solid foundation to build neat stuff on - XHTML & HTTP. Ajax is cool, but we should never lose sight of the fact that these are the two core technologies that drive the web. Without either, websites would cease to be.
  • #96 And if you try to leapfrog over either, you’re doomed. This is one statement I always want you to keep in mind when you’re working with JavaScript. And here’s an example of why:
  • #97 And if you try to leapfrog over either, you’re doomed. This is one statement I always want you to keep in mind when you’re working with JavaScript. And here’s an example of why:
  • #106 What happens if JS is off? Unfortunately you still see this all over the web... if I hear of any of you doing it, I will track you down.
  • #107 For a while, we thought this was a good improvement over the previous because at least there was an action for the user if Javascript was off, but it’s not maintainable.
  • #108 We then started to think about externalizing the scripting to functions like this.
  • #109 We then started to think about externalizing the scripting to functions like this.
  • #110 We then started to think about externalizing the scripting to functions like this.
  • #111 We then started to think about externalizing the scripting to functions like this.
  • #112 We then started to think about externalizing the scripting to functions like this.
  • #113 We then started to think about externalizing the scripting to functions like this.
  • #114 We then started to think about externalizing the scripting to functions like this.
  • #115 We then started to think about externalizing the scripting to functions like this.
  • #116 We then started to think about externalizing the scripting to functions like this.
  • #117 We then started to think about externalizing the scripting to functions like this.
  • #118 We then started to think about externalizing the scripting to functions like this.
  • #119 We then started to think about externalizing the scripting to functions like this.
  • #120 We can do so much better with far less code.
  • #121 We can do so much better with far less code.
  • #122 We can do so much better with far less code.
  • #123 We can do so much better with far less code.
  • #124 We can do so much better with far less code.
  • #125 We can do so much better with far less code.
  • #126 We can do so much better with far less code.
  • #127 We can do so much better with far less code.
  • #129 Who remembers this little treat? I’d like you to think about your web work like the McDLT, where JavaScript and CSS are separated as much as humanly possible. Why? because it makes a lot of things easier.
  • #130 Who remembers this little treat? I’d like you to think about your web work like the McDLT, where JavaScript and CSS are separated as much as humanly possible. Why? because it makes a lot of things easier.
  • #131 Who remembers this little treat? I’d like you to think about your web work like the McDLT, where JavaScript and CSS are separated as much as humanly possible. Why? because it makes a lot of things easier.
  • #132 CSS was poorly understood back then, but we know better now...don’t we? Don’t be so sure.
  • #133 CSS was poorly understood back then, but we know better now...don’t we? Don’t be so sure.
  • #134 This was taken from a popular JavaScript library. I won’t say which, but most of them have stuff like this. That’s an accessibility issue
  • #135 But what if best practices change? Your Javascript needs to be flexible to be maintainable. Just like the McDLT, JavaScript and CSS come together to create a tasty treat, but to be at their best, they need a little separation.
  • #136 in this example, I’m using a function (addClassName) that adds CLASS names in a maintainable way (Prototype has an element method like this)
  • #138 Simple and straightforward. Scripts like sIFR that require some manual edits to the CSS take this path. Requires diligence in implementation to keep errors out.
  • #139 Numerous widget scripts and libraries take this path (Lightbox, for instance). Still requires implementation to be error-free.
  • #140 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #141 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #142 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #143 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #144 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #145 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #146 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #147 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #148 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #149 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #150 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #151 Relies only on the JS and CSS being in the same folder. It doesn’t matter where though.
  • #152 Implementation example.
  • #153 Implementation example.
  • #154 Implementation example.
  • #155 Implementation example.
  • #156 Implementation example.
  • #157 Implementation example.
  • #158 Implementation example.
  • #159 Implementation example.
  • #160 Implementation example.
  • #161 Implementation example.
  • #162 A little messier, but still very maintainable.
  • #163 A little messier, but still very maintainable.
  • #164 A little messier, but still very maintainable.
  • #165 A little messier, but still very maintainable.
  • #166 A little messier, but still very maintainable.
  • #167 A little messier, but still very maintainable.
  • #168 A little messier, but still very maintainable.
  • #169 A little messier, but still very maintainable.
  • #170 your CSS would be added in the configuration of the script and would be easy to maintain and update along with the script as it is a single file. You are still including the two together, but it is a little more separation than writing inline styles.
  • #171 your CSS would be added in the configuration of the script and would be easy to maintain and update along with the script as it is a single file. You are still including the two together, but it is a little more separation than writing inline styles.
  • #172 your CSS would be added in the configuration of the script and would be easy to maintain and update along with the script as it is a single file. You are still including the two together, but it is a little more separation than writing inline styles.
  • #173 your CSS would be added in the configuration of the script and would be easy to maintain and update along with the script as it is a single file. You are still including the two together, but it is a little more separation than writing inline styles.
  • #174 your CSS would be added in the configuration of the script and would be easy to maintain and update along with the script as it is a single file. You are still including the two together, but it is a little more separation than writing inline styles.
  • #175 your CSS would be added in the configuration of the script and would be easy to maintain and update along with the script as it is a single file. You are still including the two together, but it is a little more separation than writing inline styles.
  • #180 separate your style rules from others by prefacing them in some way with the name of the script
  • #189 Prototype stores its version info as a string
  • #248 Using Jesse Skinner’s addDOMLoadEvent()
  • #249 Using Jesse Skinner’s addDOMLoadEvent()
  • #250 Using Jesse Skinner’s addDOMLoadEvent()
  • #251 Using Jesse Skinner’s addDOMLoadEvent()
  • #252 Using Jesse Skinner’s addDOMLoadEvent()
  • #253 Using Jesse Skinner’s addDOMLoadEvent()
  • #254 Using Jesse Skinner’s addDOMLoadEvent()
  • #255 Using Jesse Skinner’s addDOMLoadEvent()
  • #256 Using Jesse Skinner’s addDOMLoadEvent()
  • #259 Talk about client and lack of modern computers & mobile.