TogglePre.js
上传用户:z100004
上传日期:2020-03-27
资源大小:1084k
文件大小:5k
源码类别:

TAPI编程

开发平台:

Visual Basic

  1. var MinPreHeight = 450;
  2. var MinPreChars  = 750;
  3. var PreOpen = new Image();
  4. var PreClose = new Image();
  5. var PreCopy = new Image();
  6. PreOpen.src="/images/plus.gif";
  7. PreClose.src = "/images/minus.gif";
  8. PreCopy.src = "/images/copy_16.png";
  9. function togglePre()
  10. {
  11. var id = this.getAttribute("preid");
  12. var preelm = document.getElementById("pre" + id);
  13. var imgelm = document.getElementById("preimg" + id);
  14. var togelm = document.getElementById("precollapse" + id);
  15. if (preelm.style.display != 'none') 
  16. {
  17. if (document.all) togelm.innerText = " Expand code snippet";
  18. else {
  19. document.getElementById("premain" + id).className = "precollapse";
  20. togelm.firstChild.nodeValue = " Expand code snippet";
  21. }
  22. preelm.style.display = 'none';
  23. imgelm.setAttribute("src", PreOpen.src);
  24. }
  25. else 
  26. {
  27. if (document.all) togelm.innerText = " Collapse code snippet";
  28. else {
  29. document.getElementById("premain" + id).className = "SmallText";
  30. togelm.firstChild.nodeValue = " Collapse code snippet";
  31. }
  32. preelm.style.display = 'block';
  33. imgelm.setAttribute("src", PreClose.src);
  34. }
  35. }
  36. function CopyCode(name) {
  37. if (!document.all && !window.netscape) return false;
  38. var id = this.getAttribute("preid");
  39. if (id < 0) return false;
  40. var elm = document.getElementById("pre" + id.toString());
  41. if (!elm) return false;
  42. var inputText;
  43. if(document.all) inputText = elm.innerText;
  44. else inputText = elm.textContent;
  45. if (window.clipboardData) window.clipboardData.setData("Text", inputText);
  46. else if (window.netscape) {
  47. var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
  48. if (!clip) return;
  49. var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
  50. if (!trans) return;
  51. trans.addDataFlavor('text/unicode');
  52. var str = new Object();
  53. var len = new Object();
  54. var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  55. str.data = inputText;
  56. trans.setTransferData("text/unicode", str, inputText.length * 2);
  57. var clipid = Components.interfaces.nsIClipboard;
  58. if (!clip) return false;
  59. clip.setData(trans, null, clipid.kGlobalClipboard);
  60. }
  61. return false;
  62. }
  63. function InitTogglePre() {
  64. var canCopy = document.all || window.netscape;
  65. var articleText = document.getElementById("contentdiv");
  66. if (!articleText) return;
  67. var pres = articleText.getElementsByTagName("pre");
  68. if (window.netscape) {
  69. try { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); }
  70. catch (e) {canCopy = false; }
  71. }
  72. for (var i=0; i<pres.length; i++)
  73. {
  74. var parent = pres[i].parentNode;
  75. /*var wrap = document.createElement("div");
  76. wrap.className = "no-vmads";
  77. parent.insertBefore(wrap, pres[i]);
  78. var node = parent.removeChild(pres[i]);
  79. wrap.appendChild(node); */
  80. /*
  81. if (pres[i].offsetHeight == 0)
  82. { if (pres[i].innerText.length < MinPreChars) continue; }
  83. else if (pres[i].offsetHeight < MinPreHeight)
  84. continue;
  85. */
  86. var main = document.createElement("div");
  87. main.style.width="100%";
  88. main.setAttribute("id", "premain" + i.toString());
  89. var elm = document.createElement("img");
  90. elm.setAttribute("id", "preimg" + i.toString());
  91. elm.setAttribute("src", PreClose.src);
  92. if (document.all) elm.style.cursor = "pointer";
  93. elm.setAttribute("height", 9);
  94. elm.setAttribute("width", 9);
  95. elm.setAttribute("preid", i);
  96. elm.onclick = togglePre;
  97. main.appendChild(elm);
  98. elm = document.createElement("span");
  99. elm.setAttribute("id", "precollapse" + i.toString());
  100. if (document.all)
  101. {
  102. main.className = "precollapse";
  103. elm.innerText = " Collapse";
  104. elm.style.cursor = "pointer";
  105. }
  106. else
  107. {
  108. main.className = "SmallText";
  109. main.style.cursor = "pointer";
  110. elm.textContent = " Collapse";
  111. }
  112. elm.style.marginBottom = 0;
  113. elm.onclick = togglePre;
  114. elm.setAttribute("preid", i);
  115. main.appendChild(elm);
  116. if (canCopy) {
  117. elm = document.createElement("img");
  118. elm.setAttribute("src", PreCopy.src);
  119. elm.setAttribute("height", 16);
  120. elm.setAttribute("width", 16)
  121. elm.style.marginLeft = "35px";
  122. main.appendChild(elm);
  123. elm = document.createElement("a");
  124. main.className = "SmallText";
  125. if (document.all) elm.innerText = " Copy Code";
  126. else elm.textContent = " Copy Code";
  127. elm.href = '#';
  128. elm.setAttribute("preid", i);
  129. elm.onclick = CopyCode;
  130. main.appendChild(elm);
  131. }
  132. //wrap.setAttribute("id", "pre" + i.toString());
  133. //wrap.style.marginTop = 0;
  134. pres[i].setAttribute("id", "pre" + i.toString());
  135. pres[i].style.marginTop = 0;
  136. var parent = pres[i].parentNode;
  137. parent.insertBefore(main, pres[i]);
  138. }
  139. }
  140. InitTogglePre();