Presented at London Web Standards Pick 'n' Mix, 18th January 2011
Numerous tips and advice on writing JavaScript code that avoids most common pitfalls, is unmaintainable, inaccessible or slow as a dog.
Futher explanation and links to articles mentioned can be found at http://rossbruniges.posterous.com/
Basic Tutorial of React for ProgrammersDavid Rodenas
This is the support of a course to teach React programming for Java and C# programmers. It covers from its origins in Facebook til separation of presentational and container components. What is JSX, rules, state, props, refactoring, conditionals, repeats, forms, synchronizing values, composition, and so on.
Front-end Javascript testing is a thing since 3/4 years now, but it’s still a ghost in the dev community: someone believes in it while someone else is not convinced at all.
This talk will tackle the misconceptions about testing, how and what to test, dependencies mocking and strategies to write tests in a profitable way without being afraid.
How to identify bad third parties on your pageCharles Vazac
By Charles Vazac (Akamai)
MidwestJS 2018
Being a developer of a third-party script means not only that you battle browser discrepancies and bugs, but also non-conforming code that exists on the page. We have spent countless hours debugging issues, only to learn that the culprit was an overwritten method or property that behaves differently than its original native. I will share with you the tools and methods we use to identify and workaround these party crashers.
Good karma: UX Patterns and Unit Testing in Angular with KarmaExoLeaders.com
If you listen to backend developers, they will tell you that writing unit tests is essential to good karma. Pay it forward with tests and get back a reliable application. But getting unit tests running on the front end in a “real” application can be a lot more challenging. This intermediate-beginner level workshop will cover how to get setup for writing unit tests, and how to write front-end and end-to-end oriented unit tests for a variety of use cases all for AngularJS. We will work from a series of use cases, transform those into formal acceptance tests, write failing unit tests and then resolve those tests writing code with Angular, html/jade/css and node.
Presentation by Laura Ferguson and Boris Kan @ Create, inc, 2015
Writing code as an individual and writing code as part of the team are two very different things. Learn the tips and tricks for writing JavaScript code as part of the team so that your code will continue to work for years to come.
Basic Tutorial of React for ProgrammersDavid Rodenas
This is the support of a course to teach React programming for Java and C# programmers. It covers from its origins in Facebook til separation of presentational and container components. What is JSX, rules, state, props, refactoring, conditionals, repeats, forms, synchronizing values, composition, and so on.
Front-end Javascript testing is a thing since 3/4 years now, but it’s still a ghost in the dev community: someone believes in it while someone else is not convinced at all.
This talk will tackle the misconceptions about testing, how and what to test, dependencies mocking and strategies to write tests in a profitable way without being afraid.
How to identify bad third parties on your pageCharles Vazac
By Charles Vazac (Akamai)
MidwestJS 2018
Being a developer of a third-party script means not only that you battle browser discrepancies and bugs, but also non-conforming code that exists on the page. We have spent countless hours debugging issues, only to learn that the culprit was an overwritten method or property that behaves differently than its original native. I will share with you the tools and methods we use to identify and workaround these party crashers.
Good karma: UX Patterns and Unit Testing in Angular with KarmaExoLeaders.com
If you listen to backend developers, they will tell you that writing unit tests is essential to good karma. Pay it forward with tests and get back a reliable application. But getting unit tests running on the front end in a “real” application can be a lot more challenging. This intermediate-beginner level workshop will cover how to get setup for writing unit tests, and how to write front-end and end-to-end oriented unit tests for a variety of use cases all for AngularJS. We will work from a series of use cases, transform those into formal acceptance tests, write failing unit tests and then resolve those tests writing code with Angular, html/jade/css and node.
Presentation by Laura Ferguson and Boris Kan @ Create, inc, 2015
Writing code as an individual and writing code as part of the team are two very different things. Learn the tips and tricks for writing JavaScript code as part of the team so that your code will continue to work for years to come.
Aman Mishra from TO THE NEW walks through Vue.Js. It gives an introduction about Vue.js, popularity, size comparison, template syntax, the importance of Vue.js and much more.
JQuery is awesome, but with all major browsers following the ES and HTML5 specs, the library has become more of a convenience than a necessity for browser compatibility. While the library is useful and ubiquitous, it does distract us from learning the language that it's built on. This talk will outline functionalities that pure javascript provides, and also provide steps we can take to begin writing vanilla javascript applications and start appreciating the power and uniqueness of javascript.
Fórum de Software Livre do Serpro RJ 2009Fabio Akita
Esta palestra é muito parecida com a que eu também ministrei no evento Dev in Rio 2009, portanto os slides são quase iguais caso você já tenha baixado.
A apresentação fala sobre filosofias, valores e idéias ágeis e como elas são a fundação da comunidade Ruby on Rails e do ecossistema que se formou ao seu redor.
Alguns dos vídeos mostrados estão disponíveis em http://vimeo.com/akitaonrails.com
Turn your spaghetti code into ravioli with JavaScript modulesjerryorr
JavaScript is the language that powers the interactive web of the future. But as our web applications become larger and more complex, we begin to strain the old paradigm of throwing a bunch of JavaScript functions into a few files. Complex dependencies, tight coupling, and global state can turn our code into a huge plate of spaghetti. Though browsers do not natively support JavaScript modules, there are many tools that can help us to write clean, modular JavaScript.
In this session, we will explore the benefits of writing modular JavaScript. We will also take a deep dive into specific JavaScript module systems, such as Browserify, RequireJS, and the module standards that are coming in ES6.
s React.js a library or a framework? In any case, it is a new way of working that represents a revolution in the way of building web projects. It has very particular characteristics that allow us, for instance, to render React code from the server side, or to include React components from Twig tags. During this talk we will present React.js, we will explore how to take advantage of it from PHP projects and we will give answers to practical problems such as universal (isomorphical) rendering and the generation of React.js forms from Symfony forms without duplication of efforts.
Presentation made for Google Developer Day Vietnam. It is an quick and advanced overview of AngularJS modern JavaScript MVC framework. Learn some of the main features as well as other concepts around Angular.JS like SEO, Tooling, Best Practices.
Aman Mishra from TO THE NEW walks through Vue.Js. It gives an introduction about Vue.js, popularity, size comparison, template syntax, the importance of Vue.js and much more.
JQuery is awesome, but with all major browsers following the ES and HTML5 specs, the library has become more of a convenience than a necessity for browser compatibility. While the library is useful and ubiquitous, it does distract us from learning the language that it's built on. This talk will outline functionalities that pure javascript provides, and also provide steps we can take to begin writing vanilla javascript applications and start appreciating the power and uniqueness of javascript.
Fórum de Software Livre do Serpro RJ 2009Fabio Akita
Esta palestra é muito parecida com a que eu também ministrei no evento Dev in Rio 2009, portanto os slides são quase iguais caso você já tenha baixado.
A apresentação fala sobre filosofias, valores e idéias ágeis e como elas são a fundação da comunidade Ruby on Rails e do ecossistema que se formou ao seu redor.
Alguns dos vídeos mostrados estão disponíveis em http://vimeo.com/akitaonrails.com
Turn your spaghetti code into ravioli with JavaScript modulesjerryorr
JavaScript is the language that powers the interactive web of the future. But as our web applications become larger and more complex, we begin to strain the old paradigm of throwing a bunch of JavaScript functions into a few files. Complex dependencies, tight coupling, and global state can turn our code into a huge plate of spaghetti. Though browsers do not natively support JavaScript modules, there are many tools that can help us to write clean, modular JavaScript.
In this session, we will explore the benefits of writing modular JavaScript. We will also take a deep dive into specific JavaScript module systems, such as Browserify, RequireJS, and the module standards that are coming in ES6.
s React.js a library or a framework? In any case, it is a new way of working that represents a revolution in the way of building web projects. It has very particular characteristics that allow us, for instance, to render React code from the server side, or to include React components from Twig tags. During this talk we will present React.js, we will explore how to take advantage of it from PHP projects and we will give answers to practical problems such as universal (isomorphical) rendering and the generation of React.js forms from Symfony forms without duplication of efforts.
Presentation made for Google Developer Day Vietnam. It is an quick and advanced overview of AngularJS modern JavaScript MVC framework. Learn some of the main features as well as other concepts around Angular.JS like SEO, Tooling, Best Practices.
From barCamp London 3 on the 25th November 2007.
Explaining how to make the most of networking opportunities using websites that you maybe already use everyday!
Talk from barcamplondon5 with notes at www.thecssdiv.co.uk/2008/09/30/barcamplondon5-slides/
The web is a great learning tool and I suggest methods through which it can be made even better by pointing out the bad things in popular posts.
Refactoring, Agile Entwicklung, Continuous Integration – all diese für nachhaltigen Erfolg wichtigen Vorgehensweisen setzen Erfahrung mit Unit Testing voraus. Abseits von den üblichen "Bowling"-Beispielen möchten wir gerne einen Crashkurs inkl. Best Practices für das erfolgreiche Unit Testing durchführen. Anhand eines Beispielprojekts auf Basis des Zend Frameworks werden wir nach der Installation von PHPUnit auf allen Notebooks gemeinsam eine kleine Applikation aufbauen, die durchgehend Test-driven entwickelt wird.
UK Symfony Meetup, November 2012
Original presentation: https://docs.google.com/presentation/pub?id=1PLcqTby6yqSbfWlMIDHknH852DU6DO6OAgQJOtSEdsg&start=false&loop=false&delayms=3000
The curious Life of JavaScript - Talk at SI-SE 2015jbandi
My talk about the life of JavaScript, from birth to today.
I went trough the demos and code examples very quickly, rather as a teaser to show how modern JavaScript development might look.
If you are interested in a deep dive into the topic of modern JavaScript development, HTML5, ES6, AngularJS, React, Gulp, Grunt etc, please consider my courses: http://www.ivorycode.com/#schulung
Jenkins User Conference 2012
Only by the third plugin do you get the hang of writing a plugin. I thought as a developer coming to the build side of things it'd be easy to jump in and write some plugins. I was wrong. Don't be fooled by the extremely friendly Jenkins community, writing a plugin from scratch is harder than they let on. This talk will explain the hurdles that I had to cross to make writing plugins easy.
Similar to Writing JavaScript that doesn't suck (20)
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
10. Organisation
JSLint is a JavaScript program that looks for
problems in JavaScript programs. It is a code
quality tool.
More information on the JS Lint at http://www.jslint.com/lint.html
Remember to useJavaScript
Lint your eventDelegation
11. Organisation
application = some large JS app (global)
function eatMe() {
// accessing the global variable
application = false;
}
eatMe();
application.shouldWork();// now returns false
Beware Remember to use eventDelegation
global variables, they are easy to overwrite
12. Organisation
application = some large JS app (global)
function eatMe() {
// now accessing a local variable
var application = false;
}
eatMe();
application.shouldWork()// now works
Beware Remember to use eventDelegation
global variables, they are easy to overwrite
13. Organisation
return
{
javascript : "fantastic"
};
Example by Douglas Crockford
Don’t rely on semi-colon insertion to work
Remember to use eventDelegation
14. Organisation
return; // Semicolon inserted, believing the
statement has finished. Returns undefined
{ // Considered to be an anonymous block, doing
nothing
javascript : "fantastic"
};// Semicolon interpreted as an empty dummy line
and moved down
Example by Douglas Crockford
Don’t rely on semi-colon insertion to work
Remember to use eventDelegation
15. Organisation
return {
javascript : "fantastic"
};
Example by Douglas Crockford
Hug your brackets and remember to include your semi-colons
Remember to use eventDelegation
16. Organisation
1 == true // returns true as 1 is a ‘truthy’
value and gets converted to such
1 === true // returns false as no conversion is
applied
Remember to use eventDelegation
Always use === and !==
17. Organisation
More Crockford facts at http://crockfordfacts.com/
Remember to for Douglas
Do it use eventDelegation
18. Organisation
$(‘#foo’).click(function(){console.log(‘please
stop this madness’);}).end().filter
(‘div.urgghhh’)
Pain for someone down the line
Avoid long chained statements use eventDelegation doesn’t mean
Remember to - just because you can
that you should.
19. Organisation
Remember to likes eventDelegation
Everyone use a nice chain
20. Organisation
But you can end up looking use eventDelegationget too much
Remember to like a douche if you
21. Organisation
$(‘#foo’)
.click(function(){
console.log(‘please stop this madness’);
})
.end()
.filter(‘div.urgghhh’);
Remember to use eventDelegation
This works just fine
22. Organisation
Remember of a JS Design Pattern
Make use to use eventDelegation
23. Organisation
var clean = function() {
var debug = false;
var init = function() {
console.log(‘fail’);
};
return {
init : init
};
}();
clean.init();
Revealing Module Pattern - clean, tidy and easy to understand
Remember to use eventDelegation
24. Organisation
http://addyosmani.com/blog/essentialjsdesignpatterns/
Remember to use eventDelegation
Free book!
25. Organisation
Remember over complication
Avoid to use eventDelegation
26. Organisation
Just because you THINK it to use be cool doesn’t mean it will be.
Remember might eventDelegation
Especially if no one has asked for it.
27. Organisation
function poorlyThoughtOut() {
// OK I’m going to get some elements
// add a class or two
// parse some data from the elements
// remove some DOM elements
// parse some data from someplace else
// fade the background to yellow to highlight
the change
// update the screenreader buffer
}
Don’t stuff your functions until they burst
Remember to use eventDelegation
28. Organisation
function parseData() {}
function updateBuffer() {}
function betterPlanned() {
// OK I’m going to get some elements
// add a class or two
// parseData()
// remove some DOM elements
// parseData()
// updateBuffer()
}
Smaller functions are easier useunderstand and more modular
Remember to to eventDelegation
29. Organisation
In your code trigger an event
$.trigger(‘carousel_move’);
If someone needs it they can use it later
$.bind(‘carousel_move’, function(e) {
console.log(‘event functionality without
needing to alter the existing code base’);
});
Custom events to to use for future development
Remember allow eventDelegation
30. Organisation
//
// Dear maintainer:
//
// Once you are done trying to 'optimize' this
routine,
// and have realized what a terrible mistake that
was,
// please increment the following counter as a
warning
// to the next guy:
//
// total_hours_wasted_here = 39
//
comment from stackoverflow thread - http://stackoverflow.com/questions/184618/
Remember to useyour code
Comment eventDelegation
31. Organisation
/**
* Change the role of the employee.
* @param {integer} employeeId The id of the
employee.
* @param {string} [newRole] The new role of the
employee.
*/
function recast(employeeId, newRole) {
}
project homepage at http://code.google.com/p/jsdoc-toolkit/
JSDocToolkit - commentseventDelegation out
Remember to use in, documentation
32. Organisation
/*
@name vehicle.Sled#reindeer
@function
@description Set the reindeer that will pull
Santa's sled.
@param {string[]} reindeer A list of the
reindeer.
@example
// specifying some reindeer
Sled().reindeer(['Dasher', 'Dancer', 'Rudolph',
'Vixen']);
*/
full article by Frances Berriman at http://24ways.org/2010/documentation-driven-design-for-apis
Documentation-Driven Design,eventDelegationcode second
Remember to use document first
33. Organisation
// TODO: Fix this. Fix what?
comment from stackoverflow thread - http://stackoverflow.com/questions/184618/
WhateverRemember to use eventDelegation the start.
you choose ensure you do it from
34. Organisation
/**
* Always returns true.
*/
public boolean isAvailable() {
return false;
}
comment from stackoverflow thread - http://stackoverflow.com/questions/184618/
Remember to it upeventDelegation
Keep use to date
35. Performance
diagram from http://www.sapdesignguild.org/
36. Performance
taken by pi.kappa - http://www.flickr.com/photos/27890120@N08/
Don’t prematurely optimise - you’re just ASSuming
37. Performance
$(‘#foo div’) = bad, it will search first for ALL
divs in the document;
$(‘div.me’) is better it will only search for
divs with that specific class
$(‘div#me’) = best, all JS parses will look only
for that specific element
Write good selectors (sizzle parse right to left - in IE6 and 7)
38. Performance
var expensive-selector = $(“.section:first”),
reused-json-object = $.getJSON(‘docs.json’),
reusable-regex = /d(b+)d/g;
Cache quicker for reuse
39. Performance
Exit quickly to avoid silent fails
40. Performance
var elm = $(‘#findMe’);
if (!elm.length) { return false; }
We now know that this code will only be run if
the element actually exists.
Exit quickly to avoid silent fails
41. Performance
from The Mysteries of JavaScript Fu, Dan Webb - http://www.slideshare.net/danwrong/java-script-fu-
Remember to use eventDelegation
42. Performance
.live() example - quick and dirty
$('tr').live('click', function(event) {
// this == tr element
});
Code examples from http://brandonaaron.net/blog/2010/03/4/event-delegation-with-jquery
Remember to use eventDelegation
43. Performance
.delegate() example - also chainable
$('table').delegate('tr', 'click', function(event){
// this == tr element
});
Code examples from http://brandonaaron.net/blog/2010/03/4/event-delegation-with-jquery
Remember to use eventDelegation
44. Performance
Handrolled example - maximum control
$('table').bind('click', function(event) {
// this == table element
var $tr = $(event.target).closest('tr');
});
Code examples from http://brandonaaron.net/blog/2010/03/4/event-delegation-with-jquery
Remember to use eventDelegation
45. Performance
Cause minimal reflows use eventDelegation in IE)
Remember to and repaints (especially
46. Performance
“Repaint - also known as redraw - is what happens
whenever something is made visible when it was
not previously visible, or vice versa, without
altering the layout of the document.”
Quote from http://dev.opera.com/articles/view/efficient-javascript/?page=all
Remember to use eventDelegation
Repaints
47. Performance
“whenever the DOM tree is manipulated, whenever a
style is changed that affects the layout,
whenever the className property of an element is
changed, or whenever the browser window size is
changed...
In many cases, they are equivalent to laying out
the entire page again.”
Quote from http://dev.opera.com/articles/view/efficient-javascript/?page=all
Remember toReflows
use eventDelegation
48. Don’t forget your accessibility
taken by Drew McLellan - http://www.flickr.com/photos/drewm/
50. Don’t forget your accessibility
$(‘#foo’).bind(‘mouseenter focus’, function(e) {
code goes here
});
$(‘#foo’).bind(‘mouseleave blur’, function(e) {
code goes here
});
If you use .bind (opposed to .click) you can include multiple events
51. Don’t forget your accessibility
Invalid mark-up is still invalid mark-up even when inserted via JS
52. Don’t forget your accessibility
Remember to update the screenreader buffer
53. Don’t forget your accessibility
1. Update the value of a hidden input field
2. Ensure that you have a tabIndex value of -1 on
the element that you’ve altered
3. .focus() on the newly inserted content
The old(ish) way
54. Don’t forget your accessibility
“Live region markup allows web page authors to
specify when and how live changes to specific
areas of a web page should be spoken or shown on
a Braille display by a screen reader.”
Read more at https://developer.mozilla.org/en/AJAX/WAI_ARIA_Live_Regions
The new(ish) way - ARIA live regions
55. Don’t forget your accessibility
aria-live - sets the frequency of updates to AT
aria-controls - assosiates a control with an
area. All actions on that control are announced
by AT
aria-relevant - states what changes to the live
region are to be announced to AT
Read more at https://developer.mozilla.org/en/AJAX/WAI_ARIA_Live_Regions
The new(ish) way - ARIA live regions
57. Don’t forget your ‘edge cases’
If things can goto use eventDelegation
Remember wrong then normally will
58. Don’t forget your ‘edge cases’
Remember to code for when the server doesn’t return
a value - it might be down or the app might be
broken.
The server might take longer to reply than expected
and cause a timeout meaning an empty return value.
If things can go wrong then normally will
59. Don’t forget your ‘edge cases’
$.ajax is the backbone to all jQuery AJAX methods
like $.getScript or $.getJSON and allows for much
greater flexibility.
$.ajax({
url : “foo.php”,
dataType : “json”,
success : function(data) {
gets sent the JSON response
},
error : function() {
gets sent the error type and text
},
timeout : 1000
});
Remember toto the rescue
$.ajax use eventDelegation
60. Don’t forget your ‘edge cases’
ALL current versions of IE can’t apply styles to
the new HTML5 elements without the use of
JavaScript.
More information on the HTML5shiv at http://code.google.com/p/html5shiv/
Remember tothe HTML5 shiv
Beware use eventDelegation
61. Don’t forget your ‘edge cases’
Lots of clever people recommend the use of Remy
Sharps HTML5shiv to force IE into rendering these
elements after it was found that creating empty
pointers to them with JavaScript makes them
styleable.
More information on the HTML5shiv at http://code.google.com/p/html5shiv/
Remember tothe HTML5 shiv
Beware use eventDelegation
62. Don’t forget your ‘edge cases’
So JS is being used to ensure CSS works.
More information on the HTML5shiv at http://code.google.com/p/html5shiv/
Remember tothe HTML5 shiv
Beware use eventDelegation
63. Don’t forget your ‘edge cases’
Remember to use eventDelegation
Fail?
64. Don’t forget your ‘edge cases’
<div class=”section”>
<section>
</section>
</div>
You can now apply CSS to .section and be safe in
the knowledge that they will always be applied.
Remember A safereventDelegation
to use way
65. Don’t forget your ‘edge cases’
Clients wouldn’t like their site looking like this...
Remember to use eventDelegation