Ich würde das Hintergrundbild geladen werden, wie so
<style>
body{
background-image:url('mybackground');
background-repeat:no-repeat;
}
</style>

Wie das Bild bereits geladen können wir ohne den Browser ein wenig JavaScript tun viel zu tun Extra Arbeit. können wir prüfen, ob die Höhe des Bildes das gesamte Fenster ausfüllt.
<script>
var el = $('body')[0];
var src = $(el).css('background-image').slice(4, -1);
var img = new Image();
checkHeight = function(){
if(img.height < window.innerHeight){
repeatBg();
}
}
img.onload = checkHeight();
img.src = src;
</script>
Wenn das Bild Hintergrund nicht die volle Höhe des Fensters füllt dann diesem Hintergrund muss sich wiederholende/Spiegeln sofort (dies wird die Ladezeit erhöhen); anderenfalls können Ereignis-Listener verwendet werden, um die Überprüfung später auszulösen.
Die folgende Funktion zeichnet das Bild auf das Canvas-Element und erstellt eine DatenURL. Das Hintergrundbild src wird auf die neue Daten-URL aktualisiert, und der Wiederholungshintergrund wird von nicht wiederholt zu wiederholt-y (vertikal) geändert;
Die Ereignislistener werden dann entfernt, damit die Funktion nicht erneut aufgerufen wird.
<canvas style="display:none" id="canvas"></canvas>
<script>
repeatBg = function(){
var canvas = $('#canvas')[0];
var ctx = canvas.getContext("2d");
canvas.width = img.width;
canvas.height = img.height *2 ;
ctx.drawImage(img,0,0);
ctx.scale(1, -1);
ctx.translate(0, -img.height);
ctx.drawImage(img, 0, -img.height, img.width, img.height);
var dataURL = canvas.toDataURL();
$(el).css({
'background-image' : 'url('+dataURL+')',
'background-repeat' : 'repeat-y'
});
$(window).off('load, scroll, resize', checkHeight);
}
$(window).on('load, scroll, resize', checkHeight);
</script>
Und schwupps

http://jsfiddle.net/dtjones1988/y49rvu73/6/
Sie könnten ein Bild aus dem Original und umgekehrt machen und sie als Hintergrund mit Wiederholungs-y setzen –