Javascript pastebin - collaborative debugging tool

Posted by daniel on Tue 25 Oct 10:14

View followups from Anonymous | download | new post
  1. exports.sidebar = function(window, options){
  2. var document = window.document,
  3. defaultSidebar = document.getElementById('sidebar-box');
  4.  
  5. if (defaultSidebar){
  6.  
  7. var sidebar = { elements: {} },
  8. uid = new Date().getTime(),
  9. clone = defaultSidebar.cloneNode(true),
  10. splitter = document.getElementById('sidebar-splitter'),
  11. parseElements = function(el){
  12. if (el && el.tagName){
  13. sidebar[el.tagName] = el;
  14. if (el.id) el.id = el.id + '-' + uid;
  15. var length = el.childNodes.length;
  16. if(length) for (var i = 0; i <= length; i++) parseElements(el.childNodes[i]);
  17. }
  18. };
  19.  
  20. parseElements(clone);
  21.  
  22. if(!options.header) sidebar.sidebarheader.style.display = 'none';
  23. sidebar.browser.style.backgroundColor = '#ffffff';
  24. document.getElementById('browser').insertBefore(clone, splitter);
  25.  
  26. sidebar.options = options;
  27.  
  28. sidebar.injectAssets = function(assets){
  29. var page = sidebar.browser.contentDocument;
  30. if(page){
  31. (assets.css || []).forEach(function(href){
  32. var link = page.createElement('link');
  33. link.rel = 'stylesheet';
  34. link.type = 'text/css';
  35. link.href = href + (href.split('?')[1] ? '&' : '?') + 'cacheBust=' + new Date().getTime();
  36.  
  37. page.body.appendChild(link);
  38. });
  39.  
  40. (assets.js || []).forEach(function(src){
  41. var script = page.createElement('script');
  42. script.type = 'text/javascript';
  43. script.src = src + (src.split('?')[1] ? '&' : '?') + 'cacheBust=' + new Date().getTime();
  44.  
  45. page.body.appendChild(script);
  46. });
  47. }
  48. };
  49.  
  50. sidebar.load = function(title, url){
  51. sidebar.options.title = title ? title : sidebar.options.title || '';
  52. sidebar.options.url = url ? url : sidebar.options.url || 'about:blank';
  53. sidebar.browser.setAttribute('src', sidebar.options.url);
  54. sidebar.vbox.setAttribute('src', sidebar.options.url);
  55. sidebar.label.value = sidebar.options.title;
  56. return sidebar;
  57. };
  58.  
  59. sidebar.show = function(){
  60. splitter.hidden = false;
  61. sidebar.vbox.hidden = false;
  62. var content = sidebar.browser.contentWindow;
  63. if(!content || content.location != sidebar.options.url) sidebar.load();
  64. sidebar.label.value = sidebar.options.title;
  65. return sidebar;
  66. };
  67.  
  68. sidebar.hide = function(document){
  69. sidebar.vbox.hidden = true;
  70. splitter.hidden = true;
  71. return sidebar;
  72. };
  73.  
  74. sidebar.close = function(document){
  75. sidebar.hide();
  76. sidebar.label.value = '';
  77. sidebar.browser.setAttribute('src', 'about:blank');
  78. sidebar.vbox.setAttribute('src', 'about:blank');
  79. return sidebar;
  80. };
  81.  
  82. sidebar.destroy = function(){
  83. document.getElementById('browser').removeChild(sidebar.vbox);
  84. };
  85.  
  86. sidebar.domready = function(){
  87. (sidebar.options.onDomReady || function(){}).call(sidebar, this);
  88. }
  89.  
  90. sidebar.browser.addEventListener('DOMContentLoaded', sidebar.domready, false);
  91. sidebar.toolbarbutton.addEventListener('click', sidebar[sidebar.options.closeButtonAction || 'close'], false);
  92.  
  93. sidebar.show();
  94. sidebar.hide();
  95.  
  96. }
  97.  
  98. return sidebar || false;
  99.  
  100.  
  101. };
Submit a correction or amendment below (make a fresh posting)

After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

To highlight particular lines, prefix each line with @@
Remember me
How long should your post be retained?