debug_mem_leak.html 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <script src="../demo/kitchen-sink/require.js"></script>
  6. <script type="text/javascript">
  7. require.config({
  8. paths: { ace: "../lib/ace" },
  9. waitSeconds: 0
  10. });
  11. </script>
  12. </head>
  13. <body>
  14. <p><button onclick="toggleEditor()">Toggle editor</button></p>
  15. <div id="container"></div>
  16. <script>
  17. var editor;
  18. var counter = 0
  19. function toggleEditor() {
  20. if (!editor) {
  21. var root = document.createElement("div");
  22. root.style.height = "100px";
  23. root.setAttribute("id", "editor");
  24. root.textContent = "function foo(items) {\nvar x = 'All this is syntax highlighted';\nreturn x;\n}";
  25. document.getElementById("container").appendChild(root);
  26. editor = ace.edit(root);
  27. if (counter++ % 2)
  28. editor.setTheme("ace/theme/monokai");
  29. else
  30. editor.setTheme("ace/theme/clouds");
  31. editor.session.setMode("ace/mode/javascript");
  32. } else {
  33. editor.destroy();
  34. var el = editor.container;
  35. el.parentNode.removeChild(el);
  36. editor.container = null
  37. editor.renderer = null
  38. editor = null;
  39. var root = document.getElementById("editor")
  40. if (root)
  41. root.parentNode.removeChild(root);
  42. }
  43. }
  44. require(["ace/ace"], function(ace) {
  45. window.ace = ace;
  46. toggleEditor();
  47. })
  48. </script>
  49. </body>
  50. </html>