-
Notifications
You must be signed in to change notification settings - Fork 1.2k
JavaScript Browser APIs Course
Browser APIs Course Overview
Below you can find the ordered content of the topic, in a linear progression
The linear progression of content aims to cover all content, course by course, workout by workout as follows:
- first course is the only core one, denoted by its manifest
- the next course is denoted by the first item of the next array in each course manifest
- each course has its order of workouts designated by the sections field in the same aforementioned manifest
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | using-javascript-on-a-web-page | ✅ | 👶 introduction | javascript-syntax.2: 10 | ✅ | ✅ | ❌ | ✅ |
2 | what-is-the-document-object | ✅ | 👶 introduction 💪 workout |
dom.2: 10 | ✅ | ✅ | ❌ | ✅ |
3 | modifying-the-body | ✅ | 👶 introduction 💪 workout |
dom.2: 10 | ✅ | ✅ | ❌ | ✅ |
4 | get-elements | ✅ | 👶 introduction 💪 workout |
dom.4: 10 | ✅ | ✅ | ❌ | ✅ |
5 | modify-elements | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-using-javascript-on-a-webpage-inline | jsfiddle | 👶 introduction 💪 workout |
javascript-syntax.2: 10 | ✅ |
2 | js-practice-using-javascript-on-a-webpage | jsfiddle | 👶 introduction 💪 workout |
javascript-syntax.2: 10 | ✅ |
3 | js-practice-modify-body-background-color | codepen | 👶 introduction 💪 workout |
dom.2: 10 | ✅ |
4 | js-practice-modify-element | codepen | 👶 introduction 💪 workout |
dom.2: 10 | ✅ |
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | creating-elements | ✅ | 👶 introduction 💪 workout |
dom.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | overwriting-dom-nodes-contents | ✅ | 👶 introduction 💪 workout |
dom.0: 10 dom.2: 10 |
✅ | ✅ | ❌ | ✅ |
3 | write-a-function-to-return-an-element | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | write-a-function-to-return-a-complex-element | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | appending-nodes-to-the-document | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | js-practice-create-a-complex-element-given-an-object | codepen | ❌ | dom.0: 1000 dom.1: 1000 |
❌ |
2 | js-practice-create-elements-modify-and-append-to-the-dom | codepen | ❌ | dom.0: 10 dom.2: 10 |
❌ |
Game:
3. navigation
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | form-a-url-from-its-parts | ✅ | 👶 introduction 💪 workout 🔮 obscura |
browser-apis-browser.1: 10 identify-network-protocols.9: 10 identify-network-protocols.10: 10 |
✅ | ✅ | ❌ | ✅ |
2 | navigating-the-browser-history | ✅ | 👶 introduction 💪 workout 🦑 deep 🔮 obscura |
browser-apis-browser.1: 10 identify-network-protocols.9: 10 identify-network-protocols.10: 10 |
✅ | ✅ | ❌ | ✅ |
3 | modify-a-website-s-url | ✅ | 👶 introduction 💪 workout 🦑 deep 🔮 obscura |
browser-apis-browser.1: 10 identify-network-protocols.9: 10 identify-network-protocols.10: 10 |
✅ | ✅ | ❌ | ✅ |
4 | warn-user-if-back-button-is-pressed | ✅ | 👶 introduction 💪 workout 🔮 obscura |
browser-apis-browser.1: 10 | ✅ | ✅ | ❌ | ✅ |
5 | top-location-href | ✅ | 👶 introduction 💪 workout 🔮 obscura |
browser-apis-browser.1: 10 identify-network-protocols.9: 10 identify-network-protocols.10: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
4. toolbox-i
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | notifications-api | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
browser-apis-device.0: 10 browser-apis-browser.2: 10 |
✅ | ✅ | ❌ | ✅ |
2 | geolocation | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
browser-apis-browser.0: 10 browser-apis-device.1: 10 |
✅ | ✅ | ❌ | ✅ |
3 | vibration-api | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep 🔮 obscura |
browser-apis-device.3: 10 | ✅ | ✅ | ❌ | ✅ |
4 | battery-api | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep 🔮 obscura |
browser-apis-device.0: 10 | ✅ | ✅ | ❌ | ✅ |
5 | page-visibility-api | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep 🔮 obscura |
browser-apis-device.0: 10 browser-apis-browser.1: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | async-and-defer-scripts | ✅ | ✨ new 💪 workout 🦑 deep 🔮 obscura |
browser-tooling.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | high-resolution-time-api | ✅ | ✨ new 💪 workout 🦑 deep 🔮 obscura |
browser-tooling.0: 10 browser-tooling.2: 10 |
✅ | ✅ | ❌ | ✅ |
3 | navigation-timing-api | ✅ | ✨ new 💪 workout 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | user-timing-api | ✅ | ✨ new 💪 workout 🦑 deep 🔮 obscura |
browser-tooling.0: 10 browser-tooling.2: 10 |
✅ | ✅ | ❌ | ✅ |
5 | progress-event | ✅ | ✨ new 💪 workout 🦑 deep 🔮 obscura |
browser-tooling.0: 10 dom.3: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | blobs | ✅ | 👶 introduction 💪 workout 🦑 deep |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | filereader-readasdataurl | ✅ | 👶 introduction 💪 workout 🦑 deep |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | filereader-readastext | ✅ | 👶 introduction 💪 workout 🦑 deep |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | filereader-readasarraybuffer | ✅ | 👶 introduction 💪 workout 🦑 deep |
browser-store-data.6: 10 | ✅ | ✅ | ❌ | ✅ |
5 | window-localstorage | ✅ | 👶 introduction 💪 workout 🦑 deep |
browser-store-data.1: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
7. toolbox-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | allow-an-element-to-go-fullscreen | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep 🔮 obscura |
browser-apis-browser.1: 10 | ✅ | ✅ | ❌ | ✅ |
2 | drawing-with-html5-canvas-api | ✅ | 💪 workout 🦑 deep |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | fetch-api | ✅ | 👶 introduction ✨ new 💪 workout |
browser-connect-to-remote-hosts.3: 10 | ✅ | ✅ | ❌ | ✅ |
4 | permission-api | ✅ | 👶 introduction ✨ new 💪 workout |
browser-apis-device.3: 10 | ✅ | ✅ | ❌ | ✅ |
5 | network-information-api | ✅ | 👶 introduction ✨ new 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | interaction-with-the-user | ✅ | 👶 introduction ✨ new 💪 workout |
dom.3: 10 | ✅ | ✅ | ❌ | ✅ |
2 | handling-click-events | ✅ | 👶 introduction 💪 workout |
dom.3: 10 | ✅ | ✅ | ❌ | ✅ |
3 | drag-and-drop-api | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep 🔮 obscura |
dom.3: 10 | ✅ | ✅ | ❌ | ✅ |
4 | mediadevices-getusermedia | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
✅ - At least one insight covers this
❌ - Nothing covers this
🛠️ - This standard has no objectives yet
- ✅ Create and append elements to the Document
- ❌ Create complex elements from structured data
- ✅ Modify the style or state of elements
- ✅ Create events handlers for events relating to Document elements
- ✅ Find elements in the DOM with Document methods
- ✅ Use modern browser APIs to interact with device performance information, like battery level, memory usage, or storage availability
- ✅ Use modern browser APIs to interact with device location information, like location or accelerometer data
- ❌ Use modern browser APIs to interact with device ports, such as serial or usb
- ✅ Use other device APIs to take advantage of device capabilities
- ✅ Use the Geolocation API to determine a browser's physical location
- ✅ Use browser APIs to manage windows and tabs
- ✅ Use browser APIs to send notifications
- ❌ Use localstorage to store data
- ✅ Use WebSQL to store data
- ❌ Use Cookies to store data
- ❌ Use Session storage to store data
- ❌ Direct the browser to cache responses
- ❌ Direct the browser to clear data from persistent stores
- ✅ Interact with stored data on the device
- ❌ Use the XMLHttpRequest API to send and receive data from a remote host
- ❌ Use the WebSocket API to maintain a stateful connection between a browser and remote host
- ❌ Use the WebRTC API to create a real-time communication channel between two browsers
- ✅ Use the Fetch API to request resources from a remote host
- ✅ Use in-browser tooling to measure resource loading times to identify network bottlenecks
- ❌ Use in-browser tooling to profile memory issues and identify memory leaks
- ✅ Use in-browser tooling to analyze runtime performance and improve efficiency
- ❌ Create and use the canvas element
- ❌ Initialize a 2D drawing context from a Canvas element
- ❌ Initialize a 3D drawing context from a Canvas element
- ❌ Create shapes with a drawing context
- ❌ Use images on a Canvas
- ❌ Put text on a Canvas
- ❌ Transform a shape on a Canvas
- ❌ Modify the style of elements on a Canvas
Given the insights are tagged with aspects, we can filter over the linear content progression and create learning sub-paths.
These sub-path progressions will most likely not cover all content, but they will ensure and enforce an unified learning experience, tailor for the user wish.
For example, a user might be interested in new additions and updates of a language, rather than introduction lessions. Note that these sub-paths don't take games into consideration
If you are being introduced to the topic for the first time
Insights:
- using-javascript-on-a-web-page
- what-is-the-document-object
- modifying-the-body
- get-elements
- modify-elements
- creating-elements
- overwriting-dom-nodes-contents
- write-a-function-to-return-an-element
- write-a-function-to-return-a-complex-element
- appending-nodes-to-the-document
- form-a-url-from-its-parts
- navigating-the-browser-history
- modify-a-website-s-url
- warn-user-if-back-button-is-pressed
- top-location-href
- notifications-api
- geolocation
- vibration-api
- battery-api
- page-visibility-api
- blobs
- filereader-readasdataurl
- filereader-readastext
- filereader-readasarraybuffer
- window-localstorage
- allow-an-element-to-go-fullscreen
- fetch-api
- permission-api
- network-information-api
- interaction-with-the-user
- handling-click-events
- drag-and-drop-api
- mediadevices-getusermedia
Exercises:
- js-practice-using-javascript-on-a-webpage-inline
- js-practice-using-javascript-on-a-webpage
- js-practice-modify-body-background-color
- js-practice-modify-element
Theory put into practice/that’s how you achieve X points
Insights:
- what-is-the-document-object
- modifying-the-body
- get-elements
- modify-elements
- creating-elements
- overwriting-dom-nodes-contents
- write-a-function-to-return-an-element
- write-a-function-to-return-a-complex-element
- appending-nodes-to-the-document
- form-a-url-from-its-parts
- navigating-the-browser-history
- modify-a-website-s-url
- warn-user-if-back-button-is-pressed
- top-location-href
- notifications-api
- geolocation
- vibration-api
- battery-api
- page-visibility-api
- async-and-defer-scripts
- high-resolution-time-api
- navigation-timing-api
- user-timing-api
- progress-event
- blobs
- filereader-readasdataurl
- filereader-readastext
- filereader-readasarraybuffer
- window-localstorage
- allow-an-element-to-go-fullscreen
- drawing-with-html5-canvas-api
- fetch-api
- permission-api
- network-information-api
- interaction-with-the-user
- handling-click-events
- drag-and-drop-api
- mediadevices-getusermedia
Exercises:
- js-practice-using-javascript-on-a-webpage-inline
- js-practice-using-javascript-on-a-webpage
- js-practice-modify-body-background-color
- js-practice-modify-element
Prerequisite knowledge consisting of 2 or more 👶/💪 workouts
Insights:
- navigating-the-browser-history
- modify-a-website-s-url
- notifications-api
- geolocation
- vibration-api
- battery-api
- page-visibility-api
- async-and-defer-scripts
- high-resolution-time-api
- navigation-timing-api
- user-timing-api
- progress-event
- blobs
- filereader-readasdataurl
- filereader-readastext
- filereader-readasarraybuffer
- window-localstorage
- allow-an-element-to-go-fullscreen
- drawing-with-html5-canvas-api
- drag-and-drop-api
- mediadevices-getusermedia
Recently added/gained traction feature
Insights:
- notifications-api
- geolocation
- vibration-api
- battery-api
- page-visibility-api
- async-and-defer-scripts
- high-resolution-time-api
- navigation-timing-api
- user-timing-api
- progress-event
- allow-an-element-to-go-fullscreen
- fetch-api
- permission-api
- network-information-api
- interaction-with-the-user
- drag-and-drop-api
- mediadevices-getusermedia
Stories, obscure details that don’t specifically relate to a learning objective
Insights:
- form-a-url-from-its-parts
- navigating-the-browser-history
- modify-a-website-s-url
- warn-user-if-back-button-is-pressed
- top-location-href
- vibration-api
- battery-api
- page-visibility-api
- async-and-defer-scripts
- high-resolution-time-api
- navigation-timing-api
- user-timing-api
- progress-event
- allow-an-element-to-go-fullscreen
- drag-and-drop-api
- mediadevices-getusermedia
Want to contribute to this wiki? Go right ahead! If it has to do with how the Enki software ecosystem works, or editorial guidelines for how to write, let us handle that. Anything else, edit away!
Curriculum Format:
- Topic Documentation
- Course Documentation
- Workout Documentation
- Insight Documentation
- Glossary Documentation
Contributor Resources:
Curriculum overview:
Topic pages: