dynamic-load.html 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="../dist/svg-pan-zoom.js"></script>
  5. <script src="jquery.min.js"></script>
  6. </head>
  7. <body>
  8. <h1>Demo for svg-pan-zoom: Dynamic SVG load</h1>
  9. <div id="container"></div>
  10. <button id="swap" style="padding: 5px 20px; background: red; border: 1px solid #ff0404;">swap</button>
  11. <script>
  12. // Don't use window.onLoad like this in production, because it can only listen to one function.
  13. $(function() {
  14. var lastEventListener = null;
  15. function createNewEmbed(src){
  16. var embed = document.createElement('embed');
  17. embed.setAttribute('style', 'width: 500px; height: 500px; border:1px solid black;');
  18. embed.setAttribute('type', 'image/svg+xml');
  19. embed.setAttribute('src', src);
  20. document.getElementById('container').appendChild(embed)
  21. lastEventListener = function(){
  22. svgPanZoom(embed, {
  23. zoomEnabled: true,
  24. controlIconsEnabled: true
  25. });
  26. }
  27. embed.addEventListener('load', lastEventListener)
  28. return embed
  29. }
  30. var lastEmbedSrc = 'tiger.svg'
  31. , lastEmbed = createNewEmbed(lastEmbedSrc)
  32. ;
  33. function removeEmbed(){
  34. // Destroy svgpanzoom
  35. svgPanZoom(lastEmbed).destroy()
  36. // Remove event listener
  37. lastEmbed.removeEventListener('load', lastEventListener)
  38. // Null last event listener
  39. lastEventListener = null
  40. // Remove embed element
  41. document.getElementById('container').removeChild(lastEmbed)
  42. // Null reference to embed
  43. lastEmbed = null
  44. }
  45. $('#swap').on('click', function(){
  46. // Remove last added svg
  47. removeEmbed()
  48. if (lastEmbedSrc == 'tiger.svg') {
  49. lastEmbedSrc = 'Tux.svg'
  50. } else {
  51. lastEmbedSrc = 'tiger.svg'
  52. }
  53. lastEmbed = createNewEmbed(lastEmbedSrc)
  54. })
  55. });
  56. </script>
  57. </body>
  58. </html>