<html>
<body>
<script>
// This is a 10x10 24-bits RGB BMP image in white.
var imageString =
"Qk12AQAAAAAAADYAAAAoAAAACgAAAAoAAAABABgAAAAAAEABAAATCwAAEwsAAAAAAAAAAAAAAAAA" +
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
// Raw image byets.
var imageRaw = window.atob(imageString).split("");
// 10x10x3 bytes are image data.
var pixelBytes = 300;
var beginByte = imageRaw.length - pixelBytes;
function generateNewImage()
{
// Add 1 to image data.
for (var i = beginByte; i < imageRaw.length; ++i) {
var c = imageRaw[i].charCodeAt(0);
if (c == 255) {
imageRaw[i] = String.fromCharCode(0);
} else {
imageRaw[i] = String.fromCharCode(c+1);
break;
}
}
var bmpImage = new Image();
bmpImage.src = "data:image/bmp;base64," + window.btoa(imageRaw.join(""));
return bmpImage;
}
var imageCount = 0;
function addImage()
{
if (imageCount >= 1000 * 1000)
return;
document.getElementById("imageCanvas").appendChild(generateNewImage());
window.setTimeout("addImage()", 1);
}
function runTest()
{
document.getElementById("dragFrame").contentWindow.location.href =
"about:blank";
addImage();
}
</script>
<p>To run this test:</p>
<p>1. Drag this text 10 times:
<iframe id="dragFrame" width="50" height="30">.</iframe></p>
<p>2. Click this <button onclick="runTest();">Start</button> button.</p>
<p>3. Let it run for 5 minutes and browser shouldn't crash.</p>
<div id="imageCanvas"></div>
<script>
// Write this content to the iframe.
var content =
"<" + "body" + ">" +
"<" + "script" + ">" +
"function dragStartHandler()" +
"{" +
" var img = new Image();" +
" img.src = 'data:image/bmp;base64," + imageString + "';" +
" event.dataTransfer.setDragImage(img, 10, 10);" +
"}" +
"</" + "script" + ">" +
"<span ondragstart='dragStartHandler()'" +
" style='-webkit-user-select:none;" +
" -webkit-user-drag: element;" +
" position: absolute; top: 0; left: 0;" +
" background-color: blue;'>HERE</span>" +
"</" + "body" + ">";
var doc = document.getElementById("dragFrame");
doc.contentDocument.open();
doc.contentDocument.write(content);
doc.contentDocument.close();
</script>
</body>
</html>