Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
document-promises-pinkie
Advanced tools
Document loading states as Promises
Document Promises is a ponyfill for document.parsed, document.contentLoaded, and document.loaded which allow you to run code after specific states of the document.
fetch('data.json').then(function (data) {
document.parsed.then(function () {
document.querySelectorAll('.username').textContent = data.username;
});
});
document.parsed is a promise that fulfills when the document is parsed and
readyState
is interactive
, before deferred and async scripts have run.
document.contentLoaded is a promise that fulfills when the document is
parsed, blocking scripts have completed, and DOMContentLoaded
fires.
document.loaded is a promise that fulfills when the document is parsed,
blocking scripts have completed, images, scripts, links and sub-frames have
finished loading, and readyState
is complete
.
Because Document Promises is a ponyfill, it does not attach parsed
,
contentLoaded
or complete
to the document
by default. Instead, developers
are encouraged to import the features individually.
// ES6 example
import { contentLoaded } from 'document-promises';
// CommonJS example
var contentLoaded = require('document-promises').contentLoaded;
Developers may use the ponyfill as-is.
contentLoaded.then(function () {
/* document is ready */
});
Developers are strongly advised not to attach these promises to document
, as
the standard may still change substantially, and then such code would be
future-incompatible.
One might easily miss an event like DOMContentLoaded
if a script fires late,
whereas a promise like contentLoaded
guarantees the code will execute.
Furthermore, using promises for state transitions is much more
developer friendly.
Document Promises works all major 2014+ browsers, including Chrome 33+, Edge 12+, Firefox 29+, Opera 20+, Safari 7+, iOS 8+, and Android 4.4.4 & 53+. With Promise and EventListener polyfilled, support goes back to all major 2001+ browsers, including Chrome 1+, Firefox 1+, Internet Explorer 5+, iOS 1+, Netscape Navigator 6+, Opera 7+, Safari 1+, and Android 1+.
Document Promises is public domain, dependency free, and 252 bytes or less when minified and gzipped.
Yes, if this polyfill runs in a script that uses defer
then contentLoaded
will resolve before the DOMContentLoaded
event.
Yes, if something needs to run once the document has reached a certain state, one of the following micro-optimized functions will suffice.
// callback once the document is parsed (119 bytes minified/gzipped)
!function d() {
/c/.test(document.readyState) && document.body
? document.removeEventListener("readystatechange", d) | /* callback */
: document.addEventListener("readystatechange", d)
}()
// callback once the document is content loaded (120 bytes minified/gzipped)
!function d() {
/c/.test(document.readyState) && document.body
? document.removeEventListener("DOMContentLoaded", d) | /* callback */
: document.addEventListener("DOMContentLoaded", d)
}()
// callback once the document is fully loaded (112 bytes minified/gzipped)
!function d() {
/m/.test(document.readyState)
? document.removeEventListener("DOMContentLoaded", d) | /* callback */
: document.addEventListener("DOMContentLoaded", d)
}()
For convenience, each of these callback versions are available as modules.
import onParsed from 'document-promises/callback-versions/onParsed';
onParsed(
() => {
// do something on parsed
}
);
3.1.2 (February 8, 2017)
FAQs
Document loading states as Promises
The npm package document-promises-pinkie receives a total of 0 weekly downloads. As such, document-promises-pinkie popularity was classified as not popular.
We found that document-promises-pinkie demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.