123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <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>
|