/** * Handles Script tokens * * @param {Object} tok The token */ _handleScriptToken(tok) { const remainder = this.parser.clear(); if (remainder) { // Write remainder immediately behind this script. this.writeQueue.unshift(remainder); } tok.src = tok.attrs.src || tok.attrs.SRC; tok = this.options.beforeWriteToken(tok); if (!tok) { // User has removed this token return; } if (tok.src && this.scriptStack.length) { // Defer this script until scriptStack is empty. // Assumption 1: This script will not start executing until // scriptStack is empty. this.deferredRemote = tok; } else { this._onScriptStart(tok); } // Put the script node in the DOM. this._writeScriptToken(tok, () => { this._onScriptDone(tok); }); }
/** * Handles style tokens * * @param {Object} tok The token */ _handleStyleToken(tok) { const remainder = this.parser.clear(); if (remainder) { // Write remainder immediately behind this style. this.writeQueue.unshift(remainder); } tok.type = tok.attrs.type || tok.attrs.TYPE || 'text/css'; tok = this.options.beforeWriteToken(tok); if (tok) { // Put the style node in the DOM. this._writeStyleToken(tok); } if (remainder) { this.write(); } }