Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 19 additions & 15 deletions lazywrite.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,7 @@
originalWrite = document.write,
originalWriteln = document.writeln,
originalOnError = window.onerror,
documentWrite = originalWrite.apply
? function(){ originalWrite.apply(document, arguments); }
: /* handle IE issue */ originalWrite;
documentWrite = (originalWrite.apply) ? function(){ originalWrite.apply(document, arguments); } : originalWrite /* handle IE issue */;


// error catcher
Expand Down Expand Up @@ -206,7 +204,11 @@
// execute the global scripts stack
// return continue flag
function executeScripts(){
for (var flag; flag = executeScript(scriptStack.shift()););
var flag;
do {
flag = executeScript(scriptStack.shift());
} while (flag);

return flag !== false && !scriptBlocker;
}

Expand Down Expand Up @@ -242,10 +244,8 @@
// render in the document
if (previousHolder === renderHolder) {
// append the stack after last script stack in the global script stack.
scriptStack = (
// remove executed stack item first
newStack = scriptStack.n.slice(scriptStack.l - scriptStack.length).concat(stack)
).concat(oldStack = scriptStack.o);
// remove executed stack item first
scriptStack = (newStack = scriptStack.n.slice(scriptStack.l - scriptStack.length).concat(stack)).concat(oldStack = scriptStack.o);
scriptStack.n = newStack;
scriptStack.o = oldStack;

Expand Down Expand Up @@ -291,7 +291,10 @@

// render the global write stack
function renderStack(){
while (renderWrite(currentWrite = writeStack.shift()));
var result;
do {
result = renderWrite(currentWrite = writeStack.shift());
} while (result);

if (continued && !writeStack.length) {
// remove parallel holder, if it exists
Expand All @@ -300,11 +303,10 @@
}

// destroy objects
scriptBlocker
= scriptHolder
= previousHolder
= parallelHolder
= undef;
scriptBlocker = undef;
scriptHolder = undef;
previousHolder = undef;
parallelHolder = undef;

// restore original functions
document.write = originalWrite;
Expand Down Expand Up @@ -371,6 +373,7 @@
return (sHtmlTag = name);
}
}
return null;
}

// check html is closed
Expand Down Expand Up @@ -480,7 +483,8 @@
}
for (; script = matches.pop() ;) {
replaceElement(script, holder = createHolder());
if (src = script.getAttribute('src')) {
src = script.getAttribute('src');
if (src) {
appendElement(renderParser, createElement('script')).src = src;
}
appendElement(renderParser, script);
Expand Down