Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryanflorence/399016 to your computer and use it in GitHub Desktop.
Save ryanflorence/399016 to your computer and use it in GitHub Desktop.
/*
---
source: http://gist.github.com/133677
provides: document.write
description: jQuery based document.write replacement
requires: jQuery
authors:
- Thomas Aylott -- SubtleGradient.com
- Ryan Florence -- ryanflorence.com
thanks: Daniel Steigerwald -- daniel.steigerwald.cz
license: MIT
...
*/
(function($, document){
var wrapper = $('<div/>'),
fragment = document.createDocumentFragment();
document._writeOriginal = document.write;
document.write = function(){
var args = arguments, id = 'document_write' + $time().toString(36);
if (!$.isReady)
document._writeOriginal('<span id="' + id + '"></span>');
else
id = $('<span/>',{id:id}).appendTo(document.write.context);
function documentWrite(){
var html = Array.join(args, '');
$(function(){
Array.filter(wrapper.html(html)[0].childNodes, document.write.filter).each(function(node){
fragment.appendChild(node);
});
(id = $(id)[0]).parentNode.replaceChild(fragment, id);
});
}
setTimeout(documentWrite, 0);
};
document.write.context = document.body;
document.write.filter = function(el){ return true; };
})(jQuery, document);
/*
---
source: http://gist.github.com/133677
provides: document.write
description: MooTools based document.write replacement
requires: MooTools
author: Thomas Aylott -- SubtleGradient.com
thanks: Daniel Steigerwald -- daniel.steigerwald.cz
license: MIT
...
*/
(function($){
var wrapper = new Element('div'),
fragment = document.createDocumentFragment();
document._writeOriginal = document.write;
document.write = function(){
var args = arguments, id = 'document_write' + $time().toString(36);
if (!Browser.loaded)
document._writeOriginal('<span id="' + id + '"></span>');
else
id = new Element('span',{id:id}).inject(document.write.context);
function documentWrite(){
var html = Array.join(args, '');
document.addEvent('domready', function(){
Array.filter(wrapper.set('html', html).childNodes, document.write.filter).each(function(node){
fragment.appendChild(node);
});
(id = $(id)).parentNode.replaceChild(fragment, id);
});
}
setTimeout(documentWrite, 0);
};
document.write.context = document.body;
document.write.filter = function(el){ return true; };
})(document.id||window.$);
// USAGE EXAMPLES //
var start = +new Date;
var i = 1000; while (i--) {
document.write(i+' ');
}
var end = +new Date;
alert(end-start);
window.addEvent('domready',function(){
document.write('Lorem ipsum dolor sit amet');
var myDiv = new Element('div');
document.write.context = myDiv;
document.write('Lorem ipsum dolor sit amet');
myDiv.inject(document.body,'top');
});
document.write(1,2,3,4); // handles multiple arguments
document.write(); // doesn't break
document.write(null);
// Add a filter to stop certain things from being injected into your page
document.write.filter = function(el){
return el && !$try(function(){ return el.get('tag') == 'link' })
};
document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment