Forum Discussion
A Simple Zenodo Access Checker for Storyline
I recently ran into a problem while building Storyline teaching materials containing links to several published academic papers on Zenodo.
Zenodo has recently acknowledged ongoing performance challenges, including slower access and occasional failures, as demand and automated traffic have increased. That raised a simple learner-experience question: What happens when someone clicks a Digital Object Identifier (DOI) link while the external repository is temporarily inaccessible?
Rather than having learners try several links and wonder whether the learning material is broken, I built a small JavaScript solution.
When the learner enters a slide containing Zenodo resources, Storyline checks whether the browser can reach zenodo.org. If it can, nothing happens. If the request fails or times out after five seconds, a Storyline variable triggers a Zenodo Access Advisory.
The advisory remains visible for up to 10 seconds and can also be dismissed with an X.
The key was keeping the check simple:
fetch("https://zenodo.org/", { method: "GET", mode: "no-cors", cache: "no-store", signal: controller.signal })
The script isn't trying to retrieve anything from Zenodo or validate individual DOIs. It simply checks whether the external domain is reachable.
I A/B tested it using the real Zenodo domain and a deliberately nonexistent domain to confirm that both the silent and warning paths work.
I've shared the complete JavaScript, Storyline setup, testing method and limitations on GitHub for anyone who would like to adapt it:
Zenodo Access Checker – Ed Tech Solutions
https://github.com/carmeltse/Ed-Tech-Solutions/tree/main/zenodo-access-checker
It's a small solution, but potentially useful whenever Storyline learning materials depend on external resources. This solution can be worked as a SCORM on learning management systems (LMS) or a web file.
Has anyone built something similar for other external resources?