Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Unfortunately there is no onload support for stylesheets in most modern browsers. There is a solution I found with a little Googling.</p> <p><strong>Cited from:</strong> <a href="http://thudjs.tumblr.com/post/637855087/stylesheet-onload-or-lack-thereof" rel="noreferrer">http://thudjs.tumblr.com/post/637855087/stylesheet-onload-or-lack-thereof</a></p> <h3>The basics</h3> <p>The most basic implementation of this can be done in a measely 30 lines of — framework independent — JavaScript code:</p> <pre><code>function loadStyleSheet( path, fn, scope ) { var head = document.getElementsByTagName( 'head' )[0], // reference to document.head for appending/ removing link nodes link = document.createElement( 'link' ); // create the link node link.setAttribute( 'href', path ); link.setAttribute( 'rel', 'stylesheet' ); link.setAttribute( 'type', 'text/css' ); var sheet, cssRules; // get the correct properties to check for depending on the browser if ( 'sheet' in link ) { sheet = 'sheet'; cssRules = 'cssRules'; } else { sheet = 'styleSheet'; cssRules = 'rules'; } var interval_id = setInterval( function() { // start checking whether the style sheet has successfully loaded try { if ( link[sheet] &amp;&amp; link[sheet][cssRules].length ) { // SUCCESS! our style sheet has loaded clearInterval( interval_id ); // clear the counters clearTimeout( timeout_id ); fn.call( scope || window, true, link ); // fire the callback with success == true } } catch( e ) {} finally {} }, 10 ), // how often to check if the stylesheet is loaded timeout_id = setTimeout( function() { // start counting down till fail clearInterval( interval_id ); // clear the counters clearTimeout( timeout_id ); head.removeChild( link ); // since the style sheet didn't load, remove the link node from the DOM fn.call( scope || window, false, link ); // fire the callback with success == false }, 15000 ); // how long to wait before failing head.appendChild( link ); // insert the link node into the DOM and start loading the style sheet return link; // return the link node; } </code></pre> <p>This would allow you to load a style sheet with an onload callback function like this:</p> <pre><code>loadStyleSheet( '/path/to/my/stylesheet.css', function( success, link ) { if ( success ) { // code to execute if the style sheet was loaded successfully } else { // code to execute if the style sheet failed to successfully } } ); </code></pre> <p>Or if you want to your callback to maintain its scope/ context, you could do something kind of like this:</p> <pre><code>loadStyleSheet( '/path/to/my/stylesheet.css', this.onComplete, this ); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload