| <!doctype html> | 
| <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> | 
|   | 
|   | 
| <body> | 
|   | 
| <h1>Select an image:</h1> | 
| <a href="smiley.svg">smiley.svg</a> | 
| <br> | 
| <a href="../../images/logo.png">logo.png</a> | 
| </body> | 
|   | 
| <script> | 
|   | 
| $('a').click(function() { | 
|   var href = this.href; | 
|   var target = window.parent; | 
|   // Convert Non-SVG images to data URL first  | 
|   // (this could also have been done server-side by the library) | 
|   if(this.href.indexOf('.svg') === -1) { | 
|   | 
|     var meta_str = JSON.stringify({ | 
|       name: $(this).text(), | 
|       id: href | 
|     }); | 
|     target.postMessage(meta_str, "*"); | 
|    | 
|     var img = new Image(); | 
|     img.onload = function() { | 
|       var canvas = document.createElement("canvas"); | 
|       canvas.width = this.width; | 
|       canvas.height = this.height; | 
|       // load the raster image into the canvas | 
|       canvas.getContext("2d").drawImage(this,0,0); | 
|       // retrieve the data: URL | 
|       try { | 
|         var dataurl = canvas.toDataURL(); | 
|       } catch(err) { | 
|         // This fails in Firefox with file:// URLs :( | 
|         alert("Data URL conversion failed: " + err); | 
|         var dataurl = ""; | 
|       } | 
|       target.postMessage('|' + href + '|' + dataurl, "*"); | 
|     } | 
|     img.src = href; | 
|   } else { | 
|     // Send metadata (also indicates file is about to be sent) | 
|     var meta_str = JSON.stringify({ | 
|       name: $(this).text(), | 
|       id: href | 
|     }); | 
|     target.postMessage(meta_str, "*"); | 
|     // Do ajax request for image's href value | 
|     $.get(href, function(data) { | 
|       data = '|' + href + '|' + data; | 
|       // This is where the magic happens! | 
|       target.postMessage(data, "*"); | 
|        | 
|     }, 'html'); // 'html' is necessary to keep returned data as a string | 
|   } | 
|   return false; | 
| }); | 
|   | 
| </script> |